2013-08-01 24 views
10

Ho riscontrato problemi con la lettura dell'input fino a EOF in Java. Qui, ci sono un singolo input e l'output considera l'input ogni riga.Come leggere fino alla fine del file (EOF) usando BufferedReader in Java?

Esempio:

ingresso:

1 
2 
3 
4 
5 

uscita:

0 
1 
0 
1 
0 

Ma, ho codificato utilizzando Java, la singola uscita verrà stampato quando ero inserendo due numeri. Voglio input singolo e stampare output singolo ogni riga (terminare EOF) utilizzando BufferedReader in Java.

Questo è il mio codice:

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

puoi incollare il codice per cercare di aiutarti? – Deckard27

+0

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

+0

incolla il tuo codice? Cosa hai provato per –

risposta

13

si sta consumando una linea a, che viene scartata

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

e la lettura di un bigint a

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

quindi provare a ottenere il bigint da una stringa che viene letta come

012 cambiamento

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

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

vedi relativi 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 

vedere javadocs

+0

grazie, ma che ne dici di EOF? –

+0

EOF verrà rilevato a '(str = input.readLine())! = Null' –

+0

Oh, mio ​​Dio. Grazie, funziona, posso imparare di più sulle linee che mi hai detto. Grazie e grazie ancora per te, @a domanda –

7

Con i file di testo, forse l'EOF è -1 quando si usa BufferReader.read(), char di char. Ho eseguito un test con BufferReader.readLine()! = Null e ha funzionato correttamente.