我遇到了一个问题。我是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个数字,我写它们并且它们写“选择操作”及其结束。没有更多输入。非常感谢你:)
答案 0 :(得分: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)) ;
}
}
答案 1 :(得分:0)
Scanner#nextDouble()
仅使用输入中的下一个标记作为double。输入两个数字时,它不会消耗您在键盘上使用 Enter 键入的新行。当执行到达operacia=in.nextLine();
时,将消耗此新行,从不允许用户输入操作字符串。
要解决此问题,您需要使用Scanner#nextLine()
读取整行并将其转换为双精度:
String input = in.nextLine();
num1 = Double.parseDouble(input);
input = in.nextLine();
num2 = Double.parseDouble(input);
答案 2 :(得分:-1)
我相信in.nextLine();操作只读到您输入2个数字的行的末尾。如果您希望程序仅考虑下一行,则必须先清除当前行。
试试这个,它应该有效:
System.out.println("Choose the operation");
in.nextLine(); //clear the current line
operacia=in.nextLine();