While 循环 NoSuchElementException 整数输入 java
While loop NoSuchElementException integer input java
我为 java class 编写的菜单程序遇到了一些问题。在一个程序是 运行 之后,当程序进行第二个循环时,它会在应该为下一个程序接收用户输入的行上抛出一个 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
到目前为止,您的代码没有问题。
根据您的说法,问题是在用户做出选择后开始的。
在 calc_wages()
and/or calc_tip()
中,您可以使用另一个 Scanner
对象来获取用户的输入。
这是问题的根源。
在 class 级别声明 1 Scanner
对象并在整个代码中使用它,仅在不再需要时关闭它。
我为 java class 编写的菜单程序遇到了一些问题。在一个程序是 运行 之后,当程序进行第二个循环时,它会在应该为下一个程序接收用户输入的行上抛出一个 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
到目前为止,您的代码没有问题。
根据您的说法,问题是在用户做出选择后开始的。
在 calc_wages()
and/or calc_tip()
中,您可以使用另一个 Scanner
对象来获取用户的输入。
这是问题的根源。
在 class 级别声明 1 Scanner
对象并在整个代码中使用它,仅在不再需要时关闭它。