Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как прочитать ввод пользователя

Короткий ответ

В Java 25 строку с клавиатуры читает IO.readln(). Можно передать подсказку — она будет выведена перед вводом:

void main() {
    String name = IO.readln("Your name: ");
    IO.println("Hello, " + name + "!");
}

Результат:

Your name: Hello, Anna!

Здесь пользователь ввёл Anna. Введённый текст в терминале появляется после подсказки, а в результате выше показан только вывод программы.

Число

readln() возвращает строку — число из неё получают через Integer.parseInt():

void main() {
    int year = Integer.parseInt(IO.readln("Birth year: ").strip());
    IO.println("Age in 2026: " + (2026 - year));
}

Результат:

Birth year: Age in 2026: 36

Повторять до правильного ввода

Спрашивайте снова, пока ввод не станет числом:

void main() {
    while (true) {
        String text = IO.readln("Quantity: ");
        try {
            int quantity = Integer.parseInt(text.strip());
            IO.println("OK: " + quantity);
            break;
        } catch (NumberFormatException e) {
            IO.println("Please enter a whole number.");
        }
    }
}

Результат:

Quantity: Please enter a whole number.
Quantity: OK: 10

Пользователь сначала ввёл ten, затем 10.

Scanner

В версиях до Java 25 используют Scanner. Он умеет читать числа и слова по отдельности:

void main() {
    var scanner = new Scanner(System.in);
    int a = scanner.nextInt();
    int b = scanner.nextInt();
 
    IO.println(a + " * " + b + " = " + a * b);
}

Результат:

3 * 4 = 12

Частая ошибка

Смешивать nextInt() и nextLine() у Scanner. nextInt() оставляет перевод строки в буфере, и следующий nextLine() сразу возвращает пустую строку:

void main() {
    var scanner = new Scanner(System.in);
    int age = scanner.nextInt();
    String name = scanner.nextLine();
 
    IO.println("age=" + age + ", name=[" + name + "]");
}

Результат:

age=30, name=[]

Читайте строки целиком через nextLine() или IO.readln() и разбирайте числа через parseInt().

Функции из этого ответа

  • IO.readln() — Выводит подсказку и читает строку, которую ввёл пользователь.
  • Scanner — Читает ввод по частям: строки целиком (nextLine) или отдельные слова и числа.
  • Integer.parseInt() — Превращает строку с целым числом в int.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.