Ich benutze das Code-Snippet unten, aber es funktioniert nicht ganz so, wie ich es verstehe.Ich erhalte das Ergebnis nicht Ich erwarte Verwendung von readLine() in Java
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
try {
line = br.readLine();
while(line != null) {
System.out.println(line);
line = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
}
Von den Javadoc über readLine()
Lesen heißt es:
eine Textzeile liest. Eine Zeile wird entweder durch einen Zeilenvorschub (\n
), einen Wagenrücklauf (\r
) oder einen Wagenrücklauf gefolgt von einem Zeilenvorschub beendet.
Returns: A String
den Inhalt der Zeile, nicht einschließlich Zeilenabschlusszeichen oder null, wenn das Ende des Stroms erreicht
Wirft wurde enthält: IOException
- Wenn ein I/O-Fehler treten auf
von meinem Verständnis dafür, readLine
sollte null zum ersten Mal zurückkehrt keine Eingabe andere eingegeben wird als ein Leitungsabschluss, wie \r
. Dieser Code endet jedoch endlos. Nach dem Debuggen habe ich festgestellt, dass anstelle der Rückgabe von null, wenn nur ein Beendigungszeichen eingegeben wird, tatsächlich eine leere Zeichenfolge ("") zurückgegeben wird. Das ergibt für mich keinen Sinn. Was verstehe ich nicht richtig?
Liefert readLine() die Zeile plus den Zeilenumbruch charater - '\ n' oder nur die Zeile? – Ashwin
Von JavaDoc: "Eine Zeichenfolge, die den Inhalt der Zeile enthält, ohne Zeilenabschlusszeichen oder null, wenn das Ende des Streams erreicht wurde". –