Scanner. Has Next Int Свойство
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как значение int в радиксе по умолчанию с помощью #nextInt метода .
public bool HasNextInt
[] member this.HasNextInt : bool
Значение свойства
True, если и только в том случае, если следующий маркер этого сканера является допустимым значением int
Исключения
, Scanner если объект был закрыт,
Комментарии
Возвращает значение true, если следующий маркер во входных данных этого сканера можно интерпретировать как значение int в радиксе по умолчанию с помощью #nextInt метода . Сканер не проходит никаких входных данных.
Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.
Ввод с клавиатуры
Для того чтобы пользователь мог что-то ввести с клавиатуры, существует стандартный поток ввода, представленный объектом System.in. Рассмотрим, как это происходит.
Для ввода данных с клавиатуры в Java используется метод System.in.read() — он возвращает код введенного символа. После его выполнения JVM останавливает программу и ждет, пока пользователь введет символ с клавиатуры. Для того чтобы вывести сам символ на консоль, выполняется его приведение к типу char :
public class SystemInDemo < public static void main(String[] args) throws IOException < int x = System.in.read(); char c = (char) x; System.out.println("Код символа: " + c + " language-java">import java.util.Scanner;
Методы этого класса позволяют считывать строку, значение типа int или double .
Методы класса Scanner :
- hasNextInt() - возвращает true если с потока ввода можно считать целое число.
- nextInt() - считывает целое число с потока ввода.
- hasNextDouble() - проверяет, можно ли считать с потока ввода вещественное число типа double .
- nextDouble() - считывает вещественное число с потока ввода.
- nextLine() - позволяет считывать целую последовательность символов, то есть строку.
- hasNext() - проверяет, а остались ли в потоке ввода какие-то символы.
В следующем примере метод hasNextInt() проверяет, ввел ли пользователь целое число. И с помощью метода nextInt() считываем введенное число. Если пользователь ввел строку, то программа выведет на консоль "Вы ввели не целое число":
import java.util.Scanner; public class ScannerDemo1 < public static void main(String[] args) < Scanner scanner = new Scanner(System.in); System.out.print("Введите целое число: "); if (scanner.hasNextInt()) < int i = scanner.nextInt(); System.out.println(i); >else < System.out.println("Вы ввели не целое число"); >> >
Рассмотрим пример, в котором используется метод nextDouble() для считывания дробного числа. Если же пользователь введет строку, то программа завершится с ошибкой времени выполнения. Чтобы этого не происходило, перед вызовом метода nextDouble() , сделайте проверку с помощью метода hasNextDouble() :
import java.util.Scanner; public class ScannerDemo2 < public static void main(String[] args) < Scanner scanner = new Scanner(System.in); // если ввести букву s, // то случится ошибка во время исполнения double i = scanner.nextDouble(); System.out.println(i); >>
Следующий пример использует метод nextLine() для считывания всей строки:
import java.util.Scanner; public class ScannerDemo3 < public static void main(String[] args) < Scanner scanner = new Scanner(System.in); String s1, s2; s1 = scanner.nextLine(); s2 = scanner.nextLine(); System.out.println(s1 + s2); >>
Презентацию с видео можно скачать на Patreon .
Метод hasNextInt()
Правильно ли я думаю, что где бы пользователь не ввел текст, вместо целых чисел (внутри if (scan.hasNextInt())), метод остановит выполнение кода и выведет ошибку? Или как он вообще работает?
Отслеживать
задан 14 дек 2022 в 12:19
XlAlbertlX XlAlbertlX
13 6 6 бронзовых знаков
1 ответ 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
Использование hasNextInt() в Java
Я новичок и я запутался с использованием hasNextInt(). Если он проверяет ввод, то разве мы не должны использовать его после запроса пользователя на ввод? Однако, в приведенном ниже коде, он используется с оператором if. Посоветуйте, пожалуйста.
import java.util.Scanner; public class Test < public static void main(String[] args) < Scanner userInput = new Scanner(System.in); System.out.println("Enter your number"); if (userInput.hasNextInt()) < int numberEntered = userInput.nextInt(); System.out.println("You entered an integer"); >else < System.out.println("you didn't enter an integer"); >> >
Поделиться Источник 04 марта 2016 в 16:17
2 ответа
Метод java.util.Scanner.hasNextInt() возвращает true, если следующий токен в входе этого сканера может быть интерпретирован как значение int в строке по умолчанию с помощью метода nextInt(). Сканер не проходит мимо любого ввода.
Таким образом, сканер будет вызван при нажатии пользователем кнопки "Enter", а затем будет оценивать, является ли следующий ввод, предоставляемый пользователем, значением int или нет.
Поделиться 04 марта 2016 в 16:20
Вы используете его для проверки ввода пользователя, поэтому вы уверены, что при вызове nextInt у вас не будет исключения, потому что ввод не был целочисленным, он также не перемещает курсор вперед:
Scanner scanner = new Scanner(System.in); if(scanner.hasNextInt())