2009-09-12 16 views
5

Załóżmy mój plik wejściowy zawiera:Jak czytać sformatowane dane wejściowe w języku Java?

3 4 5 6 7  8 
9 


10 

chcę uruchomić pętli while i odczytać liczby całkowite, tak że będę się 3,4,5,6,7,8 i 10 odpowiednio po każdej iteracji pętla.

Jest to bardzo proste do zrobienia w C/C++, ale nie w Java ...

Próbowałem ten kod:

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

    } 

i co pojawia się:

51 
540287029 
540418080 
538982176 
151599117 
171511050 
218762506 
825232650 

Jak odczytać liczby całkowite z tego pliku w Java?

+1

FYI: DataInputStream jest do odczytu binarnego nie tekstu. –

+0

Tak, czy rozwiązanie java okazało się łatwiejsze niż C++ lub trudniejsze? –

+0

dla mnie, czytanie danych wejściowych w C jest jeszcze łatwiejsze, szczególnie tam, gdzie plik zawiera wszystkie rodzaje danych - liczby, ciągi znaków, znaki pływające itp. – Lazer

Odpowiedz

15

Można użyć klasy Scanner i jego metody nextInt:

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

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

wyjściowa:

3 
4 
5 
6 

Zasadniczo domyślnie obiekt Scanner ignoruje wszystkie spacje, a dostaniesz następny token.

The Scanner class as a constructor, który pobiera InputStream jako źródło strumienia znaków, więc można użyć FileInputStream, który otwiera źródło tekstu.

Wymienić Scanner instancji w powyższym przykładzie z:

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

wielkie dzięki! to działa! – Lazer

Powiązane problemy