web-dev-qa-db-fra.com

Comment lire jusqu'à la fin du fichier (EOF) en utilisant BufferedReader en Java?

J'ai du mal à lire l'entrée jusqu'à EOF dans Java. Ici, il y a une seule entrée et la sortie considère l'entrée à chaque ligne.

Exemple:

entrée:

1
2
3
4
5

sortie:

0 
1
0
1
0

Mais, j'ai codé en utilisant Java, la sortie unique s'imprimera lorsque j'entrerai deux nombres. Je veux une seule entrée et imprimer une seule sortie chaque ligne (terminer EOF) en utilisant BufferedReader en Java.

Voici mon 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());
}
15
meisyal

Vous consommez une ligne sur, qui est supprimée

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

et lire un bigint à

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

alors essayez d'obtenir le bigint de la chaîne qui se lit comme

BigInteger n = new BigInteger(str);

   Constructor used: BigInteger(String val)

Modifiez également while((str=input.readLine())!=null && str.length()!=0) en

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

voir connexes publier la chaîne dans 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 

voir javadocs

22
a question

Avec les fichiers texte, peut-être le EOF est -1 lors de l'utilisation de BufferReader.read (), char par char. J'ai fait un test avec BufferReader.readLine ()! = Null et cela a fonctionné correctement.

7
alex