Java 使用do和开关提示输入
我的代码有什么问题?它输出第一个语句(?)很好,我可以在那里输入我想要的字符,但是当它转到第二个语句(?)时(“输入第一个操作数”),我得到一个错误,它说“ 在线程“main”java.util.NoSuchElementException中输入第一个操作数:ExceptionJava 使用do和开关提示输入,java,Java,我的代码有什么问题?它输出第一个语句(?)很好,我可以在那里输入我想要的字符,但是当它转到第二个语句(?)时(“输入第一个操作数”),我得到一个错误,它说“ 在线程“main”java.util.NoSuchElementException中输入第一个操作数:Exception 有人能指出我的错误吗?这可能是保留“\n”的问题。也许这个问题可以帮助您:我建议您使用string.nextLine();而不是.nextLine();方法,因为它在nextLine解析EOL时不处理EOL 为什么要在这
有人能指出我的错误吗?这可能是保留“\n”的问题。也许这个问题可以帮助您:我建议您使用
string.nextLine();
而不是.nextLine();
方法,因为它在nextLine解析EOL时不处理EOL
为什么要在这里将字符串作为参数传递给scanner类
public static void main(String[] args){
char OperatorCode;
int answer;
int firstOperand;
int secondOperand;
String inputString;
boolean quit = false;
Scanner inLine = new Scanner(System.in);
do{
System.out.print("Enter the Operator Code (A,S,M or D): ");
inputString = inLine.nextLine();
OperatorCode = inputString.charAt(0);
if (OperatorCode != 'Q'){
inputString = inputString.substring(1, inputString.length());
Scanner string = new Scanner(inputString);
System.out.print("Enter the First Operand: ");
firstOperand = string.nextInt();
System.out.print("Enter the Second Operand: ");
secondOperand = string.nextInt();
switch (OperatorCode){
case 'A' : answer = (firstOperand + secondOperand);
System.out.println(firstOperand + " + " + secondOperand + " is " + answer);
case 'S' : answer = (firstOperand - secondOperand);
System.out.println(firstOperand + " - " + secondOperand + " is " + answer);
case 'M' : answer = (firstOperand * secondOperand);
System.out.println(firstOperand + " * " + secondOperand + " is " + answer);
case 'D' : answer = (firstOperand / secondOperand);
System.out.println(firstOperand + " / " + secondOperand + " is " + answer);
break;
}
} else
quit = true;
}while (!quit);
}
}
我猜可能是,(System.in)
还可以按照John的建议将break;
添加到案例A、S和M中在System.out.print之后添加string.nextLine();
(“输入第二个操作数:”)
。在每个案例的结尾缺少break
语句至少是一个问题……谢谢Jon和hagubear:)我没有看到这些。我恐怕这不是问题:/我仍然得到了错误。谢谢你,但我仍然得到了相同的错误,现在它添加了字符串无法转换为int。噢,哇,我怎么能呢我忽略了这一点。非常感谢!:Dbreak;和System.in.Tho它不需要是string.nextLine();
Scanner string = new Scanner(inputString);