0Pricing
Java Academy · Lektion

Alternative mit BufferedReader

Schnelleres Lesen aus der Konsole

Alternative mit BufferedReader ist eine kostenlose Java Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Java Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Schnelleres Einlesen

Scanner ist praktisch, aber bei großen Eingabemengen vergleichsweise langsam. Für das Einlesen großer Datenmengen ist BufferedReader aus java.io deutlich schneller, da die Daten in großen Blöcken auf einmal gelesen werden.

Einen BufferedReader erstellen

Schachteln Sie einen InputStreamReader um System.in und diesen wiederum in einen BufferedReader. Hier verwenden wir einen StringReader, damit die Beispiele ohne getippte Eingaben ausgeführt werden können.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("Hello"));
        System.out.println(reader.readLine());
        reader.close();
    }
}

readLine gibt einen String zurück

readLine() liest eine ganze Zeile als String ein, ohne den Zeilenabschluss. Anders als bei Scanner wird immer Text zurückgegeben, daher müssen Sie Zahlen selbst parsen.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("first\nsecond"));
        System.out.println(reader.readLine());
        System.out.println(reader.readLine());
        reader.close();
    }
}

Am Ende der Eingabe steht null

Wenn keine weitere Eingabe vorhanden ist, gibt readLine() null zurück. Das ist das Signal, dass das Einlesen beendet werden soll.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("one line"));
        System.out.println(reader.readLine());
        System.out.println(reader.readLine());
        reader.close();
    }
}

Alle Zeilen einlesen

Wiederholen Sie die Schleife, solange readLine() nicht null ist, um jede Eingabezeile zu verarbeiten.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("a\nb\nc"));
        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println("> " + line);
        }
        reader.close();
    }
}

Zahlen selbst parsen

Da readLine Text zurückgibt, wandeln Sie ihn mit Integer.parseInt um, wenn Sie eine Zahl benötigen.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("42"));
        int n = Integer.parseInt(reader.readLine().trim());
        System.out.println(n * 2);
        reader.close();
    }
}

Eine Zeile in Tokens aufteilen

Um mehrere Zahlen aus einer Zeile zu lesen, teilen Sie die Zeile mit split auf und parsen Sie jedes Teilstück.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new StringReader("10 20 30"));
        String[] parts = reader.readLine().split(" ");
        int sum = 0;
        for (String p : parts) {
            sum += Integer.parseInt(p);
        }
        System.out.println(sum);
        reader.close();
    }
}

Geprüfte Ausnahmen

readLine deklariert eine geprüfte IOException. Daher müssen Sie entweder throws IOException deklarieren oder den Aufruf in einen try-catch-Block einschließen. Bei Scanner ist das nicht erforderlich.

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

public class Main {
    public static void main(String[] args) {
        try {
            BufferedReader reader = new BufferedReader(new StringReader("data"));
            System.out.println(reader.readLine());
            reader.close();
        } catch (IOException e) {
            System.out.println("Read error");
        }
    }
}

Try-with-Resources

Verwenden Sie try-with-resources, damit der Reader auch beim Auftreten einer Ausnahme automatisch geschlossen wird.

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

public class Main {
    public static void main(String[] args) throws IOException {
        try (BufferedReader reader = new BufferedReader(new StringReader("auto-closed"))) {
            System.out.println(reader.readLine());
        }
    }
}

Ein echtes Beispiel mit System.in

Für echte Tastatureingaben schachteln Sie System.in ein. Führen Sie dieses Beispiel lokal aus, geben Sie eine Zeile ein und drücken Sie anschließend die Eingabetaste.

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter text: ");
        String input = reader.readLine();
        System.out.println("You typed: " + input);
    }
}

Scanner oder BufferedReader

Wählen Sie Scanner, wenn Ihnen Komfort und einfaches Parsen von Zahlen wichtig sind. Wählen Sie BufferedReader für hohe Geschwindigkeit bei großen Eingabemengen, wobei Sie das Parsen und die Behandlung von IOException selbst übernehmen müssen.

Schnelltest

Testen Sie Ihre Kenntnisse zu BufferedReader.

Zusammenfassung

Sie haben die Alternative BufferedReader kennengelernt:

  • Schachteln Sie System.in zunächst in InputStreamReader und anschließend in BufferedReader
  • readLine() gibt eine ganze Zeile oder am Ende der Eingabe null zurück
  • Parsen Sie Zahlen selbst mit Integer.parseInt und split
  • Es wird eine geprüfte IOException ausgelöst, die Sie behandeln oder deklarieren müssen
  • Bevorzugen Sie BufferedReader bei großen, performancekritischen Eingabemengen gegenüber Scanner

Häufig gestellte Fragen

Ist die Lektion „Alternative mit BufferedReader“ kostenlos?

Ja — der vollständige Text von „Alternative mit BufferedReader“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Java Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Java Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Alternative mit BufferedReader“?

Schnelleres Lesen aus der Konsole Du übst Java Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Java Academy zu starten?

Keine Vorkenntnisse erforderlich. Java Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Alternative mit BufferedReader“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Java Academy-Lektion Code schreiben und ausführen?

Ja. Jede Java Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Eingaben mit Scanner lesen
  2. Zahlen und Zeilen lesen
  3. Benutzereingaben validieren
  4. Alternative mit BufferedReader
← Zurück zu Java Academy