2015-11-10 201 views
0

我正面臨着從文件讀取信息的這個問題。所以我有這個文本文件的整數,我想讀取並添加到我的ArrayList。我現在的問題是,掃描器似乎只讀取前兩行而不是整個文件。使用掃描儀從文本文件中讀取信息

我的文本文件:

6 
0 4 10 0 0 2 
4 0 5 0 0 7 
10 5 0 4 0 0 
0 0 4 0 3 8 
0 0 0 3 0 6 
2 7 0 8 6 0 
2 5 

這是我的代碼:

FileReader reader = new FileReader(inputFileName); 
Scanner in = new Scanner(reader); 

// read in the data here 
while(in.hasNextLine()){ 
    if(in.hasNextInt()) 
     alist.add(in.nextInt()); 
    in.nextLine(); 
} 

這是我的輸出: 6 0 4 10 0 0 2 2

希望有人能我這。我嘗試將所有東西都存儲在字符串中,然後從那裏讀取,但是我最終得到的都是單個數字。

回答

1

你應該試試這個,當你在你的代碼說in.nextLine();它會得到一個新行讀取所有的整數

while(in.hasNextInt()){ 
    alist.add(in.nextInt()); 
} 

。所以在下一次迭代中,它只會掃描行中的第一個整數。但隨着hasNextIntnextInt對都會得到整數跳過空格(空格和新行),當它到達文件

+0

我無法相信我的聲音怎麼啞問這個問題的最終停止。但非常感謝! – Bocky

0

試試這個:

FileReader reader = new FileReader(inputFileName); 
Scanner in = new Scanner(reader); 

// read in the data here 
while(in.hasNext()){ 
    alist.add(in.nextInt()); 
} 

您遇到因爲in.nextLine();您在while循環到底叫什麼問題。這將在下一行中調用,這會讓您跳過行。

1

實際上,您正在讀取每行的第一個整數,因爲您正在循環但不包含其內容:您只需檢查行上的第一個標記是否爲int,讀取它並繼續下一行。

0
if(in.hasNextInt()) 
    alist.add(in.nextInt()); 

while(in.hasNextInt()) 
{ 
    alist.add(in.nextInt()); 
} 

替換因爲你從每行讀取INT只有一次。