2014-12-03 43 views
0

我不知道什麼是錯的。該數組應該在Number或int中。在數組java中添加值

這裏是我的代碼:

Number[] freq; 

    int place = 0; 

    BufferedReader br = new BufferedReader(new FileReader(new File("this.txt"))); 

    String read; 

    String[] temp; 

    int num; 

    while((read = br.readLine())!=null) 
    { 
     temp = read.split(","); 
     for(int i = 0; i<=temp.length; i++) 
     { 
      String t = temp[i]; 
      num = Integer.parseInt(t); 
      freq[place] = num; 
      place++; 
     } 

    } 

    System.out.println("done"); 

它不應該輸出一些沉重的結果,但我需要它的工作。 我總是得到錯誤

variable freq might not have been initialized. 
freq[place] = num; 
+4

Java數組不是動態的,實際上你需要它們初始化爲某種類型的長度然後再使用它們。 – Erik 2014-12-03 10:48:47

+0

將要在該數組中的值不總是相同的大小。我知道數組必須首先初始化爲大小,但在此程序中,它必須取決於文本文件中的數量。 – dimmed 2014-12-03 10:52:31

+0

然後,您需要使用其他類型的變量,例如可以是動態大小的ArrayList。 – Erik 2014-12-03 10:53:01

回答

2

您需要設置陣列的大小。由於您在註釋中指出它必須是動態的,因此您必須改用其他類型的可用於動態長度的變量,例如ArrayList。

見這個例子:

// initialize an ArrayList: 
List<Number> freq = new ArrayList<Number>(); 
BufferedReader br = new BufferedReader(new FileReader(new File("this.txt"))); 

String read; 
String[] temp; 

int num; 

while((read = br.readLine())!=null) 
{ 
    temp = read.split(","); 
    for(int i = 0; i<=temp.length; i++) 
    { 
     String t = temp[i]; 
     num = Integer.parseInt(t); 
     freq.add(num); 
    } 

} 

System.out.println("done"); 
+0

不錯,它的工作!謝謝!現在我知道列表可以是這樣的。 – dimmed 2014-12-03 11:02:17

3

您必須初始化數組。

Number[] freq = new Number[someSize]

+0

打我吧:) – Haris 2014-12-03 10:52:02

+1

我認爲Erik贏了... – 2014-12-03 10:52:51

0

你需要你在JAVA使用數組之前設置一個數組的大小。

int[] someArray= new int[size] 
+1

看起來不對:) – 2014-12-03 10:51:10

+1

Java中沒有'Int'。你的意思是'int [size]'? – Tom 2014-12-03 10:52:55

+0

ops,已更正。 – Haris 2014-12-03 10:54:08