0Pricing
Java Academy · Урок

Чтение строк

readLine и циклы

«Чтение строк» — бесплатный урок Java Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.

Метод readLine

readLine() — основной метод BufferedReader. Он читает символы, пока не встретит разрыв строки (Enter), а затем возвращает строку как String.

Возвращаемый текст не включает символ новой строки. В этом уроке мы прочитаем одну и несколько строк.

String line = br.readLine();

Чтение одной строки

Вот самый простой случай: прочитать имя и вывести приветствие. Метод readLine() блокирует выполнение (ожидает), пока пользователь не нажмёт Enter.

Поскольку он читает из System.in, этот фрагмент приостанавливается в ожидании ввода с клавиатуры, поэтому здесь он не запускается автоматически.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new InputStreamReader(System.in));
        String name = br.readLine();
        System.out.println("Welcome, " + name + "!");
    }
}

Что возвращает readLine в конце

Когда ввод заканчивается (достигнут конец потока или пользователь подал сигнал EOF), readLine() возвращает null, а не String.

Это важный сигнал: проверка на null позволяет понять, что нужно прекратить чтение.

String line = br.readLine();
if (line == null) {
    System.out.println("No more input.");
}

Чтение до EOF

Чтобы прочитать каждую строку до конца ввода, выполняйте цикл, пока readLine() не равен null. Этот распространённый шаблон одновременно присваивает значение и проверяет его в одном условии.

На каждой итерации Вы получаете следующую строку, пока значение null корректно не остановит цикл.

String line;
while ((line = br.readLine()) != null) {
    System.out.println("Got: " + line);
}

Чтение нескольких строк

Вот полноценная программа, которая выводит обратно каждую введённую Вами строку, пока поток не закончится.

Она читает из System.in, поэтому ожидает ввода и не запускается автоматически, но шаблон цикла можно использовать без изменений.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new InputStreamReader(System.in));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println("Echo: " + line);
        }
    }
}

Подсчёт строк

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

На каждой итерации считывается новая строка и увеличивается счётчик. Когда ввод заканчивается, мы выводим итоговое количество.

int count = 0;
String line;
while ((line = br.readLine()) != null) {
    count++;
}
System.out.println("Lines read: " + count);

Пустые строки и null

Будьте внимательны: пустая строка (пользователь просто нажал Enter) возвращается как "", пустой String, а не как null.

Поэтому "".equals(line) означает пустую строку, а line == null — что ввод действительно закончился. Это разные ситуации.

if (line == null) {
    // input finished
} else if (line.isEmpty()) {
    // user pressed Enter on a blank line
}

Имитация строк без stdin

Чтобы увидеть работу readLine() без ввода с клавиатуры, можно передать данные в BufferedReader из StringReader. Такой пример полностью запускается.

Строка содержит две строки, разделённые символами \n, а цикл выводит каждую из них.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new StringReader("apple\nbanana"));
        String line;
        while ((line = br.readLine()) != null) {
            System.out.println("Fruit: " + line);
        }
    }
}

Удаление пробельных символов

Во вводе часто встречаются лишние пробелы. Используйте trim(), чтобы удалить пробельные символы в начале и конце строки перед её использованием.

Это делает сравнение и разбор данных надёжнее, особенно если пользователь случайно добавил пробелы.

import java.io.BufferedReader;
import java.io.StringReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
            new BufferedReader(new StringReader("  hello  \n"));
        String line = br.readLine().trim();
        System.out.println("[" + line + "]");
    }
}

Чтение фиксированного числа строк

Иногда количество строк заранее известно. Цикл for считывает ровно указанное количество строк.

Это распространённый случай, когда в условии сказано: “первое число сообщает, сколько строк следует далее”.

for (int i = 0; i < 3; i++) {
    String item = br.readLine();
    System.out.println(i + ": " + item);
}

Основные правила работы с readLine

Запомните следующие правила:

  • Всегда проверяйте значение null, прежде чем использовать строку.
  • Вызывайте trim(), если лишние пробелы могут привести к ошибкам.
  • Пустая строка — не то же самое, что null.

Далее мы превратим эти строки в числа.

Быстрая проверка

Что возвращает readLine(), когда поток ввода достиг конца?

Итоги

Вы научились читать отдельные строки, организовывать цикл с помощью while ((line = br.readLine()) != null) и отличать пустую строку ("") от конца ввода (null).

Вы также увидели запускаемые примеры с использованием StringReader. Далее: преобразование текстовых строк в числа.

Часто задаваемые вопросы

Урок «Чтение строк» бесплатный?

Да — полный текст урока «Чтение строк» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.

Чему я научусь в уроке «Чтение строк»?

readLine и циклы Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Java Academy?

Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Чтение строк»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Java Academy?

Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Зачем нужен BufferedReader
  2. Чтение строк
  3. Разбор чисел из ввода
  4. Безопасное закрытие потоков
← Назад к Java Academy