2009-09-12 11 views
5

Supposons que mon fichier d'entrée contient:Comment lire une entrée formatée en Java?

3 4 5 6 7  8 
9 


10 

Je veux courir une boucle while et lire des entiers, de sorte que je vais obtenir respectivement 3,4,5,6,7,8 et 10 après chaque itération du boucle.

C'est vraiment simple à faire en C/C++, mais pas en Java ...

J'ai essayé ce code:

try { 
      DataInputStream out2 = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); 

      int i=out2.read(); 
      while(i!=-1){ 
       System.out.println(i); 
       i=out2.readInt(); 
      } 

    } catch (IOException ex) { 

    } 

et ce que je reçois est:

51 
540287029 
540418080 
538982176 
151599117 
171511050 
218762506 
825232650 

Comment lire les nombres entiers à partir de ce fichier dans Java?

+1

Pour votre information: DataInputStream est pour la lecture binaire, pas de texte. –

+0

Alors, la solution java s'est-elle avérée plus simple que le C++ ou plus? –

+0

pour moi, la lecture des entrées en C est encore plus facile, spécialement où le fichier contient toutes sortes de données - nombres, chaînes, flotteurs, etc. – Lazer

Répondre

15

On peut utiliser la classe Scanner et sa méthode nextInt:

Scanner s = new Scanner("3 4  5 6"); 

while (s.hasNext()) { 
    System.out.println(s.nextInt()); 
} 

Sortie:

3 
4 
5 
6 

Fondamentalement par défaut, l'objet Scanner ignorera tous les espaces, et obtiendra le jeton suivant.

Le Scanner class as a constructor qui prend un InputStream comme source pour le flux de caractères, donc on pourrait utiliser un FileInputStream qui ouvre la source du texte.

Remplacer le Scanner instanciation dans l'exemple ci-dessus avec les éléments suivants:

Scanner s = new Scanner(new FileInputStream(new File(filePath))); 
+0

merci beaucoup! Ça marche! – Lazer

Questions connexes