2009-09-12 14 views
5

Supponiamo che il mio file di input contiene:Come si legge l'input formattato in Java?

3 4 5 6 7  8 
9 


10 

Voglio correre un ciclo while e leggere interi, in modo che mi metterò 3,4,5,6,7,8 e 10, rispettivamente, dopo ogni iterazione del ciclo continuo.

Questo è veramente semplice da fare in C/C++ ma non in Java ...

Ho provato questo codice:

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) { 

    } 

e quello che ottengo è:

51 
540287029 
540418080 
538982176 
151599117 
171511050 
218762506 
825232650 

Come leggo i numeri interi da questo file in Java?

+1

FYI: DataInputStream è per la lettura di binario, non il testo. –

+0

Quindi, la soluzione java è risultata più semplice del C++ o più difficile? –

+0

per me, leggere gli input in C è ancora più facile, specialmente dove il file contiene tutti i tipi di dati: numeri, stringhe, float, ecc. – Lazer

risposta

15

Si può utilizzare la classe Scanner e il suo metodo nextInt:

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

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

uscita:

3 
4 
5 
6 

Fondamentalmente per impostazione predefinita, l'oggetto Scanner ignorerà qualsiasi spazio bianco, e sarà possibile ottenere il token successivo.

Il Scanner class as a constructor che prende uno InputStream come origine per il flusso di caratteri, quindi è possibile utilizzare uno FileInputStream che apre la fonte del testo.

Sostituire il Scanner esemplificazione nell'esempio di cui sopra con il seguente:

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

grazie mille! Funziona! – Lazer