While循环NoSuchElementException整数输入java

时间:2018-12-02 20:18:39

标签: java debugging java.util.scanner nosuchelementexception

我在为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

1 个答案:

答案 0 :(得分:1)

到目前为止,您的代码还可以。
用你的话说,问题在用户做出选择后就开始了。
calc_wages()和/或calc_tip()中,可能使用另一个Scanner对象来获取用户的输入。
这是问题的根源。
在类级别声明1 Scanner对象,并在整个代码中使用它,并仅在不再需要它时关闭它。