Присваивание значения переменной - Scanner несколько раз

90
15 января 2022, 04:50

Есть сканер Int чисел. С помощью try catch обрабатываю ошибку того, что это не число типа Int, но при вводе чего-то другого, кроме целого числа выдается исключение

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at Learn.main(Learn.java:27)

Код:

int a;
Scanner in = new Scanner(System.in);
System.out.print("Input there some int number of the count of variables \n");
try {
    System.out.println("STARTUEMBLYAD");
    a = in.nextInt();
}
catch (InputMismatchException e) {
    System.out.println("Error! Please, input valid number: 1,2,3, ...");
}
finally {
    if (a != 0) {
        System.out.println("\n\n\n\n\n\n\n\n\n\n\n\n\n" + a);
    } else in.nextInt();
}
in.close();

27 строка - else in.nextInt();

Что неправильно я использую в сканере? Как сделать так, чтобы при вводе не целого числа был запрос на повторный ввод числа (чтобы можно было ещё раз ввести что-либо)

Answer 1

Измените на in.nextLine(). А затем попробуйте преобразовать к int(если не получится - кинет ошибку). У вас не получается потому, что in.nextInt() ищет следующее целое число - остальное он игнорирует. Вам нужно строку читать.

a = Integer.parseInt(in.nextLine());

И да - Integer.parseInt() кидает NumberFormatException, если не получается преобразовать. Замените на catch(NumberFormatException e)
А чтобы повторно просилось - оберните в блок while(true). Добавьте break в конце блока try(мы уверены, что все прошло удачно).

READ ALSO
Не выполняется Handler

Не выполняется Handler

Подскажите пожалуйста, почему код выполняется только один раз и всё:

74
Ошибка при возвращении в методе Java

Ошибка при возвращении в методе Java

Ошибка в return getDistEclipse хочет объявление отдельного класса для getDist

71
Как лучше всего сохранять лог(java)

Как лучше всего сохранять лог(java)

Возник такой вопрос, как работать с логом в AndroidК примеру у меня есть приложение, оно обменивается данными с другим устройством

83
Релиз и Дебаг версия java web приложений

Релиз и Дебаг версия java web приложений

Задача следующаяЕсть приложение на java с web

166