2015-11-28 89 views
0

緩衝讀取器的新增功能,我正在嘗試將文件放入數組列表中...這是迄今爲止我所擁有的功能。將文件中的每個單詞放入數組列表中

FileReader in = new FileReader(latestFile); 
    BufferedReader br = new BufferedReader(in); 

    int arrayCount = 0; 
    String[] array = null; 

    String nextLine = null; 
    if ((nextLine = br.readLine()) != null) { 
     arrayCount = array.length; 
     array[arrayCount - 1] = nextLine.split("\\s+"); 

    } 

任何人都可以解釋我做錯了什麼?

+0

您能更準確地瞭解您的問題嗎? – tiledcode

+0

除了使用答案中提到的'列表',您將受益於使用['Scanner'](http://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html )從你的'BufferedReader'構造來讀取單詞,而不是讀一行並分割它 – Aaron

回答

1

只需將String[] array = null;改爲List<String> arrayList = new ArrayList<>();array[arrayCount - 1] = nextLine.split("\\s+");改爲arrayList.add(nextLine.split("\\s+"));

I.e.使用ArrayList而不是未定義的數組。

+0

剛剛嘗試了添加數組列表的第二部分。它在添加部分不斷產生錯誤。我也補充,但沒有奏效。 –

+0

什麼錯誤?提供堆棧跟蹤很難嗎? – Andremoniy

0
BufferedReader file = new BufferedReader(new FileReader("yourfile.txt")); 

ArrayList<String> array = new ArrayList<String>(); 

String line; 
while ((line = file.readLine()) != null) 
{ 
    array.add(line.split("\\s+")); 
} 
file.close(); 

基本上你逐行讀取文件線和各行添加到您的字符串的ArrayList。

如果你想訪問你可以做這樣的元素:

for (int i=0; i < array.size(); i++) 
    System.out.println(array.get(i)); 
+0

如果我錯了,請糾正我,但是這並不能通過單詞將它們分開。從我的打印輸出看,它似乎根據行將它們分開。 –

+0

你是對的,我編輯了答案。謝謝。 –

0
  • 問題是你還沒有初始化Array對象要做到這一點,你必須知道您要從文件中讀取的元素數量。 所以,你可以在陣列初始化爲

    String[] array = new String[The Number]; 
    
  • 因爲它是不可能的,你知道,這將是數組中元素的個數,你必須使用一個ArrayList。使用ArrayList將很容易。

    希望這會有所幫助。

相關問題