Ввод с клавиатуры
Для того чтобы пользователь мог что-то ввести с клавиатуры, существует стандартный поток ввода, представленный объектом 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 + " = " + x);
}
}
Конечно же, использовать System.in в чистом виде не очень удобно, если нам необходимо ввести не один символ, а целую строку. В этом случае можно воспользоваться классом Scanner
. Этот класс находится в пакете java.util
, поэтому его надо импортировать:
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.
Please log in or register to have a possibility to add comment.