我在为Java类编写的菜单程序遇到麻烦。运行一个程序后,当该程序执行第二个循环时,它会在应该为下一个要运行的程序获取用户输入的行上抛出NoSuchElementException
。我认为这与扫描仪混乱有关,但我找不到问题。有人有想法么?
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
String pin;
int selection = 0;
boolean valid = false;
do {
System.out.print("Please enter the password: ");
pin = console.nextLine();
valid = checkPassword(pin);
} while (!valid);
while (selection != 4 && valid == true) {
System.out.printf("%nPlease select a number from the menu below %n1: Wage "
+ "Calculator 2: Tip Calculator 3: Grocery Discount 4: Exit %n");
selection = console.nextInt();
if (selection == 1) {
calc_wages();
} else if (selection == 2) {
calc_tip();
} else if (selection == 3) {
System.out.print("We haven't gotten this far yet");
} else if (selection == 4){
System.out.print("Thank you for using the program.");
break;
} else {
System.out.print("There is no option for what you entered. Try again");
}
selection = 0;
}
}//main
答案 0 :(得分:1)
到目前为止,您的代码还可以。
用你的话说,问题在用户做出选择后就开始了。
在calc_wages()
和/或calc_tip()
中,可能使用另一个Scanner
对象来获取用户的输入。
这是问题的根源。
在类级别声明1 Scanner
对象,并在整个代码中使用它,并仅在不再需要它时关闭它。