Läsa rader
readLine och loopar
Läsa rader är en gratis lektion i Java Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Java Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Java Academy innehåller totalt 4 lektioner.
Metoden readLine
readLine() är kärnan i BufferedReader. Den läser tecken tills den stöter på en radbrytning (Enter) och returnerar sedan raden som en String.
Den returnerade texten innehåller inte radbrytningstecknet. I den här lektionen läser vi enstaka och flera rader.
String line = br.readLine();Läsa en rad
Här är det enklaste fallet: läs ett namn och skriv ut en hälsning. readLine() blockerar (väntar) tills användaren trycker på Enter.
Eftersom den läser från System.in pausar det här kodexemplet för att invänta indata från tangentbordet, så det kan inte köras automatiskt här.
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 + "!");
}
}Vad readLine returnerar i slutet
När det inte finns mer indata (slutet på strömmen eller när användaren signalerar EOF) returnerar readLine() null i stället för en String.
Det här är en viktig signal: genom att kontrollera om värdet är null vet vi när vi ska sluta läsa.
String line = br.readLine();
if (line == null) {
System.out.println("No more input.");
}Läsa till EOF
Om du vill läsa varje rad tills indata tar slut kan du loopa medan readLine() inte är null. Det här vanliga mönstret tilldelar ett värde och kontrollerar det i samma villkor.
Varje varv ger dig nästa rad, tills null avslutar loopen på ett ordnat sätt.
String line;
while ((line = br.readLine()) != null) {
System.out.println("Got: " + line);
}En läsare för flera rader
Här är ett komplett program som skriver ut varje rad du skriver, tills strömmen tar slut.
Det läser från System.in, så det väntar på indata och kan inte köras automatiskt, men loopmönstret är exakt det du kommer att återanvända.
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);
}
}
}Räkna rader
Du kan utföra arbete i loopen, till exempel räkna. Här räknar vi hur många rader som kommer in.
Varje iteration läser en ny rad och ökar en räknare. När indata tar slut skriver vi ut summan.
int count = 0;
String line;
while ((line = br.readLine()) != null) {
count++;
}
System.out.println("Lines read: " + count);Tomma rader kontra null
Var försiktig: en tom rad (användaren trycker bara på Enter) returnerar "", en tom String — inte null.
Alltså betyder "".equals(line) en tom rad, medan line == null betyder att indata verkligen är slut. Det är två olika saker.
if (line == null) {
// input finished
} else if (line.isEmpty()) {
// user pressed Enter on a blank line
}Simulera rader utan stdin
Om du vill se readLine() i praktiken utan indata från tangentbordet kan du mata en BufferedReader med en StringReader. Det här exemplet kan köras direkt.
Strängen innehåller två rader som separeras av \n, och loopen skriver ut var och en.
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);
}
}
}Ta bort blanksteg
Indata innehåller ofta oönskade blanksteg. Använd trim() för att ta bort inledande och avslutande blanksteg från en rad innan du använder den.
Det gör jämförelser och parsning mer tillförlitliga, särskilt när användare råkar lägga till blanksteg.
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 + "]");
}
}Läsa ett fast antal rader
Ibland känner du till antalet i förväg. En for-loop läser exakt så många rader.
Det här är vanligt när en uppgift säger “det första talet anger hur många rader som följer.”
for (int i = 0; i < 3; i++) {
String item = br.readLine();
System.out.println(i + ": " + item);
}Viktiga vanor för readLine
Kom ihåg följande vanor:
- Kontrollera alltid om värdet är
nullinnan du använder en rad. - Anropa
trim()när oönskade blanksteg kan orsaka buggar. - En tom sträng är inte samma sak som
null.
Nästa steg är att omvandla raderna till tal.
Snabbkontroll
Vad returnerar readLine() när indata strömmen har nått sitt slut?
Sammanfattning
Du har lärt dig att läsa enstaka rader, loopa med while ((line = br.readLine()) != null) och skilja en tom rad ("") från slutet på indata (null).
Du har också sett körbara exempel med StringReader. Nästa steg är att omvandla textrader till tal.
Lär dig Java med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 104
- Lektioner
- 374
Vanliga frågor
Är lektionen ”Läsa rader” gratis?
Ja – hela texten till ”Läsa rader” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Java Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Java Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Läsa rader”?
readLine och loopar Ni övar på Java Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Java Academy?
Du behöver inga förkunskaper. Utbildningen i Java Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Läsa rader”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Java Academy-lektionen?
Ja. Varje Java Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.