Как мне остановить цикл бесконечно? - PullRequest
2 голосов
/ 31 марта 2019

Не могу понять, как остановить цикл while, который повторяется бесконечно. Я использую hasNextInt, чтобы проверить, является ли пользовательский ввод int. Если int не введен, цикл повторяется бесконечно.

public static void validatingInput(){
    Scanner scan = new Scanner(System.in);

    boolean valid = false;
    int userNumber = 0;

    while(!valid) { 
    System.out.println("Enter number between 1 and 20: ");

    if (scan.hasNextInt()) {    
    userNumber = scan.nextInt();
    valid = true;   
    } else 
        System.out.print("Not an int. ");
    }

}

Ответы [ 2 ]

4 голосов
/ 31 марта 2019

Вам необходимо использовать токен со сканера, чтобы он мог прочитать следующий токен:

while (!valid) { 
    System.out.println("Enter number between 1 and 20: ");

    if (scan.hasNextInt()) {    
        userNumber = scan.nextInt();
        valid = true;   
    } else 
        System.out.print("Not an int. ");
        scan.next(); // Skip a token
    }
}
1 голос
/ 31 марта 2019

Вы можете разорвать любые циклы с помощью break;. Проверьте состояние входа и отключите время, когда вы хотите

...