[英]Java code suddenly stop
我遇到了一个问题。我是Java的新手,我从今天开始:D)..我之前已经编程过,所以我有点了解,但是我是Java的新手。 这是我的代码:
public class Tutorial {
public static void main(String[] args) {
double num1,num2;
String operacia;
Scanner in=new Scanner (System.in);
System.out.println("Write 2 numbers");
num1=in.nextDouble();
num2=in.nextDouble();
System.out.println("Choose the operation");
operacia=in.nextLine();
if (operacia.equals("+")){
System.out.println("Your result is "+(num1+num2)) ;
}
else if (operacia.equals("-")){
System.out.println("Your result is "+(num1-num2)) ;
}
else if (operacia.equals("/")){
System.out.println("Your result is "+(num1/num2)) ;
}
else if (operacia.equals("*")){
System.out.println("Your result is "+(num1*num2)) ;
}
}
}`
它需要我输入2个数字,我写了它们,并且写了“选择操作”及其结束。不再输入。非常感谢:)
您的问题很简单。
只需将代码替换为next()而不是nextLine()。有效地,您的代码正在返回的行是空白行。 因此,当它到达条件语句时,它具有一个空字符串并终止。
next()
Finds and returns the next complete token from this scanner.
nextLine()
Advances this scanner past the current line and returns the input that was skipped.
您的代码应通过简单的更改来修复。
public static void main(String[] args) {
double num1,num2;
String operacia;
Scanner in=new Scanner (System.in);
System.out.println("Write 2 numbers");
num1=in.nextDouble();
num2=in.nextDouble();
System.out.println("Choose the operation");
operacia=in.next();
if (operacia.equals("+")){
System.out.println("Your result is "+(num1+num2)) ;
}
else if (operacia.equals("-")){
System.out.println("Your result is "+(num1-num2)) ;
}
else if (operacia.equals("/")){
System.out.println("Your result is "+(num1/num2)) ;
}
else if (operacia.equals("*")){
System.out.println("Your result is "+(num1*num2)) ;
}
}
Scanner#nextDouble()
仅使用下一个令牌作为输入的double。 输入两个数字时,它不会占用您使用键盘上的Enter键键入的新行。 当执行到达operacia=in.nextLine();
,此新行将被占用,从不让用户有机会键入操作字符串。
要解决此问题,您需要使用Scanner#nextLine()
阅读整行并将其转换为double:
String input = in.nextLine();
num1 = Double.parseDouble(input);
input = in.nextLine();
num2 = Double.parseDouble(input);
我相信in.nextLine(); 该操作仅读取到您输入2个数字的行的末尾。 如果要让程序仅考虑下一行,则必须先清除当前行。
试试这个,它应该可以工作:
System.out.println("Choose the operation");
in.nextLine(); //clear the current line
operacia=in.nextLine();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.