Метод hasNextInt()
хотел бы узнать, как работает метод hasNextInput() в Java. У меня есть следующий код:
package com;
import java.util.Scanner;
public class first {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("Вы попали на необитаемый остров, ваши действия?"
+ "\n1) Буду думать как выбраться"
+ "\n2) Буду плакоть :(");
System.out.println("Введите число: ");
if (scan.hasNextInt()) {
int a = scan.nextInt();
if (a == 1) {
System.out.println("Вы молодец!");
} else if (a == 2) {
System.out.println("НУ поплакал и умер:(");
}
}
else {
System.out.println("Ошибка");
}
}
}
Правильно ли я думаю, что где бы пользователь не ввел текст, вместо целых чисел (внутри if (scan.hasNextInt())), метод остановит выполнение кода и выведет ошибку? Или как он вообще работает?
Ответы (1 шт):
Сканер работает с токенами. Токен это последовательность символов, разделенная по-умолчанию whitespace (это пробелы, табуляция, символами перевода строки)
Метод hasNextInt проверяет, что следующая последовательность символов является int-ом и в этом случае возвращает true, иначе false.
Метод nextInt пытается следующая последовательность символов как считать как int и если успешно, то возвращает его, иначе выбрасывает исключение InputMismatchException
Пример:
Scanner s1 = new Scanner("\n1 abc");
System.out.println("hasNextInt: " + s1.hasNextInt()); // true
System.out.println("nextInt: " + s1.nextInt()); // 1
System.out.println("hasNextInt: " + s1.hasNextInt()); // false
System.out.println("nextInt: " + s1.nextInt()); // InputMismatchException