2009-09-12 69 views
5

假設我輸入文件包含:如何讀取Java中的格式化輸入?

3 4 5 6 7  8 
9 


10 

我想運行一個while循環和讀取整數,所以,我會的每次迭代後分別得到3,4,5,6,7,8和10循環。

這是非常簡單的C/C++而不是在java做...

我試過這段代碼:

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

    } 

什麼,我得到的是:

51 
540287029 
540418080 
538982176 
151599117 
171511050 
218762506 
825232650 

如何從文件中讀取整數Java

+1

供參考:DataInputStream類是用於讀取二進制,而不是文本。 – 2009-09-12 06:35:40

+0

那麼,java解決方案比C++還是更難? – 2009-09-12 09:18:43

+0

對我來說,在C中讀取輸入還是比較容易的,特別是當文件包含各種數據 - 數字,字符串,浮點數等時。 – Lazer 2009-09-13 12:30:46

回答

15

人們可以使用Scanner類及其nextInt方法:

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

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

輸出:

3 
4 
5 
6 

基本上默認情況下,Scanner對象將忽略任何空白,並獲得下一個記號。

Scanner class as a constructorInputStream作爲字符流的來源,所以可以使用FileInputStream打開文本的來源。

更換Scanner實例化在上面的例子用以下:

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

非常感謝!有用! – Lazer 2009-09-12 07:24:27