0Pricing
Java Academy · Lekcja

Odczytywanie wierszy

readLine i pętle

Odczytywanie wierszy to bezpłatna lekcja Java Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Java Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Java Academy zawiera 4 lekcji w sumie.

Metoda readLine

readLine() jest najważniejszą metodą klasy BufferedReader. Odczytuje znaki aż do napotkania znaku końca wiersza (Enter), a następnie zwraca wiersz jako String.

Zwrócony tekst nie zawiera znaku nowej linii. W tej lekcji odczytamy jeden wiersz oraz wiele wierszy.

String line = br.readLine();

Odczytywanie jednego wiersza

Oto najprostszy przypadek: odczytanie imienia i wyświetlenie powitania. readLine() blokuje działanie (czeka), aż użytkownik naciśnie Enter.

Ponieważ odczytuje dane z System.in, ten fragment zatrzymuje się i czeka na dane z klawiatury, dlatego nie można go tutaj uruchomić automatycznie.

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 + "!");
    }
}

Co zwraca readLine na końcu

Gdy nie ma już więcej danych wejściowych (osiągnięto koniec strumienia lub użytkownik zasygnalizował EOF), readLine() zwraca null zamiast String.

To kluczowy sygnał: sprawdzanie wartości null pozwala rozpoznać, że należy zakończyć odczytywanie.

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

Odczytywanie do EOF

Aby odczytać każdy wiersz aż do końca danych wejściowych, należy wykonywać pętlę, dopóki readLine() nie zwróci wartości null. Ten często stosowany wzorzec przypisuje wartość i sprawdza ją w jednym warunku.

W każdej iteracji otrzymują Państwo kolejny wiersz, aż wartość null poprawnie zakończy pętlę.

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

Odczytywanie wielu wierszy

Oto kompletny program, który wyświetla ponownie każdy wiersz wpisany przez użytkownika aż do końca strumienia.

Odczytuje dane z System.in, więc czeka na dane wejściowe i nie można go uruchomić automatycznie, ale wzorzec pętli jest dokładnie taki, jaki będą Państwo ponownie stosować.

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);
        }
    }
}

Zliczanie wierszy

W pętli można wykonywać różne operacje, na przykład zliczać wiersze. W tym przykładzie zliczamy, ile wierszy zostało odczytanych.

Każda iteracja odczytuje nowy wiersz i zwiększa licznik. Po zakończeniu danych wejściowych wyświetlamy sumę.

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

Puste wiersze a null

Należy zachować ostrożność: pusty wiersz (użytkownik po prostu naciska Enter) zwraca "", czyli pusty String — a nie null.

Zatem "".equals(line) oznacza pusty wiersz, natomiast line == null oznacza rzeczywisty koniec danych wejściowych. To dwie różne sytuacje.

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

Symulowanie wierszy bez stdin

Aby zobaczyć działanie readLine() bez używania klawiatury, można zasilać BufferedReader danymi z StringReader. Ten przykład można w pełni uruchomić.

Napis zawiera dwa wiersze rozdzielone przez \n, a pętla wyświetla każdy z nich.

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);
        }
    }
}

Usuwanie białych znaków

Dane wejściowe często zawierają zbędne spacje. Przed użyciem wiersza należy zastosować trim(), aby usunąć białe znaki z początku i końca.

Dzięki temu porównywanie i parsowanie jest niezawodne, szczególnie gdy użytkownicy przypadkowo dodadzą spacje.

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 + "]");
    }
}

Odczytywanie ustalonej liczby wierszy

Czasami liczba wierszy jest znana z góry. Pętla for odczytuje dokładnie taką liczbę wierszy.

Jest to częste w zadaniach, w których podano: “pierwsza liczba określa, ile wierszy następuje po niej”.

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

Najważniejsze zasady dotyczące readLine

Warto pamiętać o następujących zasadach:

  • Zawsze należy sprawdzać wartość null przed użyciem wiersza.
  • Należy stosować trim(), gdy zbędne spacje mogą powodować błędy.
  • Pusty napis to nie to samo co null.

Następnie zamienimy te wiersze na liczby.

Szybkie sprawdzenie

Co zwraca readLine(), gdy strumień wejściowy osiągnie koniec?

Podsumowanie

Dowiedzieli się Państwo, jak odczytywać pojedyncze wiersze, wykonywać pętlę za pomocą while ((line = br.readLine()) != null) oraz odróżniać pusty wiersz ("") od końca danych wejściowych (null).

Poznali Państwo również działające przykłady używające StringReader. Następnie: zamiana wierszy tekstu na liczby.

Często zadawane pytania

Czy lekcja „Odczytywanie wierszy” jest bezpłatna?

Tak — pełny tekst „Odczytywanie wierszy” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Java Academy, przejdź na CoddyKit PRO. Kurs Java Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Odczytywanie wierszy”?

readLine i pętle Ćwiczysz Java Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Java Academy?

Nie wymagamy żadnego doświadczenia. Java Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „Odczytywanie wierszy”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Java Academy?

Tak. Każda lekcja Java Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Dlaczego BufferedReader
  2. Odczytywanie wierszy
  3. Parsowanie liczb z danych wejściowych
  4. Bezpieczne zamykanie strumieni
← Powrót do Java Academy