Во время цикла NoSuchElementException целочисленный ввод Java - PullRequest
0 голосов
/ 02 декабря 2018

У меня проблемы с программой меню, которую я пишу для своего класса 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 голосов
/ 02 декабря 2018

Ваш код пока в порядке.Из того, что вы говорите, проблема начинается после того, как пользователь делает выбор.В calc_wages() и / или calc_tip() возможно, что вы используете другой объект Scanner для получения ввода пользователя.Это источник проблем.Объявите объект 1 Scanner на уровне класса, используйте его во всем коде и закройте его только тогда, когда он больше не нужен.

...