2013-08-01 6 views
10

Ich habe Probleme mit dem Lesen der Eingabe bis EOF in Java. Hier gibt es einen einzelnen Eingang und der Ausgang betrachtet die Eingabe jeder Zeile.Wie bis zum Ende der Datei (EOF) mit BufferedReader in Java zu lesen?

Beispiel:

Eingang:

1 
2 
3 
4 
5 

Ausgang:

0 
1 
0 
1 
0 

Aber ich habe Java codiert verwenden, wird die einzelne Ausgabe gedruckt, als ich zwei Zahlen eingeben. Ich möchte einzelne Eingabe und drucken Sie einzelne Ausgabe jeder Zeile (EOF) mit BufferedReader in Java.

Dies ist mein Code:

BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); 
StringBuffer pr = new StringBuffer(""); 

String str = ""; 
while((str=input.readLine())!=null && str.length()!=0) { 
    BigInteger n = new BigInteger(input.readLine()); 
} 
+2

können Sie Ihren Code einfügen, um Ihnen zu helfen? – Deckard27

+0

Wahrscheinlich 'br.readLine()! = Null' !!! – NINCOMPOOP

+0

fügen Sie Ihren Code ein ?, was Sie so für –

Antwort

13

Sie eine Linie an, raubend, die

while((str=input.readLine())!=null && str.length()!=0) 

verworfen und eine Bigint bei

BigInteger n = new BigInteger(input.readLine()); 

so versuchen, das Lesen der Bigint bekommen von der Zeichenkette, die gelesen wird als

BigInteger n = new BigInteger(str); 

    Constructor used: BigInteger(String val) 

Aslo Änderung while((str=input.readLine())!=null && str.length()!=0) zu

while((str=input.readLine())!=null) 

post string to bigint

readLine() 
Returns: 
    A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached 

javadocs sehen

+0

Danke, aber wie wäre es mit EOF? –

+0

EOF wird erkannt bei '(str = input.readLine())! = Null' –

+0

Oh mein Gott. Danke, es funktioniert, ich kann mehr über die Zeilen erfahren, die du mir erzählt hast. Danke und nochmals vielen Dank für dich, @ eine Frage –

7

Mit Textdateien im Zusammenhang sehen, vielleicht die EOF -1 bei der Verwendung von BufferReader.read(), char von char. Ich habe einen Test mit BufferReader.readLine()! = Null gemacht und es hat richtig funktioniert.