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ść
nullprzed 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
- Dlaczego BufferedReader
- Odczytywanie wierszy
- Parsowanie liczb z danych wejściowych
- Bezpieczne zamykanie strumieni