Как защититься от ввода пользователя?

public static void main(String[] args)  {
    System.out.println("Выберите, что хотите сделать:");
    System.out.println("1.Шифрование/ расшифровка");
    System.out.println("2.Криптоанализ методом Brute Force");

    while (true) {
        if (scanner.hasNextInt()) {
            int userInputMethod = scanner.nextInt();
            System.out.println(userInputMethod);
            break;
        } else {
            System.out.println("Введите число от 1 до 2:");
        }
    }

Хочу сделать так, что бы пользователь вводил число, и если он введет символ или число не от 1 до 2, то вывести текст и еще раз запросить его input

Перепробовал много вариаций этого кода, думаю проблема в том, что неправильно написано условия для цикла while(true), подскажите как это исправить


Ответы (1 шт):

Автор решения: Зонтик

Всё очень просто. Считывайте сканнером строку (Не забывайте перехватить исключение, пользователь может ввести буквы), преобразуйте её в число. Потом проверьте, ввёл ли пользователь правильное число. Вообщем, вот код:

 boolean cycle = true;
 String userInputMethod;
 int number;
 Scanner scanner = new Scanner(System.in);
 
 while (cycle == true) {
     System.out.println("Введите число от 1 до 2:");
     userInputMethod = scanner.nextLine();
     try{
        number = Integer.parseInt(userInputMethod);
        if(number < 3 && number > 0){
            System.out.println(number);
            break;
        }
        else{
           System.out.println("Ошибка! Введено не верное число!");
        }
     } catch (Exception ex){
        System.out.println("Ошибка! Введено не число!");
    }

}    
→ Ссылка