Есть сканер 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();
Что неправильно я использую в сканере? Как сделать так, чтобы при вводе не целого числа был запрос на повторный ввод числа (чтобы можно было ещё раз ввести что-либо)
Измените на in.nextLine()
. А затем попробуйте преобразовать к int
(если не получится - кинет ошибку). У вас не получается потому, что in.nextInt()
ищет следующее целое число - остальное он игнорирует. Вам нужно строку читать.
a = Integer.parseInt(in.nextLine());
И да - Integer.parseInt()
кидает NumberFormatException, если не получается преобразовать. Замените на catch(NumberFormatException e)
А чтобы повторно просилось - оберните в блок while(true)
. Добавьте break
в конце блока try
(мы уверены, что все прошло удачно).
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Ошибка в return getDistEclipse хочет объявление отдельного класса для getDist
Возник такой вопрос, как работать с логом в AndroidК примеру у меня есть приложение, оно обменивается данными с другим устройством