Ввод с клавиатуры
Для того чтобы пользователь мог что-то ввести с клавиатуры, существует стандартный поток ввода, представленный объектом 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 .
Java.util.Scanner.hasNextInt() Method
The java.util.Scanner.hasNextInt(int radix) method returns true if the next token in this scanner's input can be interpreted as an int value in the specified radix using the nextInt() method. The scanner does not advance past any input.
Declaration
Following is the declaration for java.util.Scanner.hasNextInt() method
public boolean hasNextInt(int radix)
Parameters
radix − the radix used to interpret the token as an int value
Return Value
This method returns true if and only if this scanner's next token is a valid int value
Exception
IllegalStateException − if this scanner is closed
Example
The following example shows the usage of java.util.Scanner.hasNextInt() method.
package com.tutorialspoint; import java.util.*; public class ScannerDemo < public static void main(String[] args) < String s = "Hello World! 3 + 3.0 = 6 "; // create a new scanner with the specified String Object Scanner scanner = new Scanner(s); while (scanner.hasNext()) < // check if the scanner's next token is an int with a radix of 4 System.out.println("" + scanner.hasNextInt(4)); // print what is scanned System.out.println("" + scanner.next()); >// close the scanner scanner.close(); > >
Let us compile and run the above program, this will produce the following result −
false Hello false World! true 3 false + false 3.0 false = false 6
java_util_scanner.htm
Kickstart Your Career
Get certified by completing the course
Метод 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 что это
мне одно непонятно.. ладно мы в сканер там забиваем что то , он выдает, через System.in, а в каких случаях может пригодиться просто забивание текста непосредственно в сам сканер как в случае со стихом? ведь можно просто написать system.out.println и вывести все по человечески (я только начал обучение)
19 октября 2023
Попробовал я използовать команды if, else. В итоге 13 строк 3 ошибки. Мда, неплохое начало(
12 октября 2023
Мнение жены Ветром тревожит бамбук Но не колышет
5 октября 2023
Алексей Осипов Уровень 16
1 октября 2023
24 августа 2023
Mongoose Уровень 15
21 июня 2023
Прежде, чем делать вставку с циклом, хоть бы полслова о том, что такое цикл.
7 июня 2023
пошутил не смешно
7 июня 2023
22 мая 2023
Всем привет, какое приложение вы используете для отработки написания программы на java
Сообщество
JavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
"Программистами не рождаются" © 2023 JavaRush
Скачивайте наши приложения
"Программистами не рождаются" © 2023 JavaRush
Этот веб-сайт использует данные cookie, чтобы настроить персонально под вас работу сервиса. Используя веб-сайт, вы даете согласие на применение данных cookie. Больше подробностей — в нашем Пользовательском соглашении.
