2014-01-07 23 views
0

我試圖讀取使用CSVReader我的記事本文件,但我無法得到它的工作。它說:ArrayIndexOutOfBoundsException: 2 line "y[i][2]". eventhough我intiallize我的陣列排在100,我目前在使用Java和CSVReader新。如何使用CSVReader?

public static void main(String[] args) throws IOException { 

    double[][] x = new double[100][3]; 
    double[][] y = new double[100][1]; 

    String line[]; 
    try{ 
     CSVReader br=new CSVReader(new FileReader("ex2data2.txt"),','); 
     int i = 0; 
     while((line=br.readNext())!=null){ 
      x[i][0] = Double.parseDouble(line[0]); 
      x[i][1] = Double.parseDouble(line[1]); 
      y[i][2] = Double.parseDouble(line[2]); 
      i++; 
     } 
     br.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
    } 
+0

嗯,你的'y'二維數組允許第二級陣列中的一個元素,而你嘗試存儲在第三的東西。 –

+1

你並不需要的東西一樣複雜CVSReader讀一個簡單的文本文件......你也應該想進入更先進的東西,之前學習Java。 – 2014-01-07 05:28:27

回答

0

這是爲爲什麼你會完全不清楚是存儲數據從文件中讀取之後,你是,但是...

double[][] y = new double[100][1]; 

此分配100個double數組的數組,每個Wi TH的

這裏的長度:

y[i][2] = Double.parseDouble(line[2]); 

你嘗試存儲的東西在這些100個陣列中的一個的第三元件。它們並不那麼大;你創建它們的長度爲一個

我懷疑你的意思做:

y[i][0] = Double.parseDouble(line[2]); 

,因爲你在y陣列存儲的唯一的事情就是單個值。

之所以這麼說,這是存儲這些值的好辦法。一般來說,使用動態數據結構可以更好地服務,因此您不必擔心文件的長度(行數)是多少。另外,爲什麼你需要兩個不同的二維數組?例如,即使是List<Double[]>也會更好。

+0

,因爲我會在稍後將其存儲在我的矩陣對象「矩陣Ax =新矩陣(x)其中x必須是2維數組(JAMA lib)」動態數據結構如何工作?我不知道如何使用列表 user3065339

0

你必須創建

double[][] y = new double[100][1]; 

即100行和1列。但試圖將價值放在位置y[i][2]。這就是爲什麼你得到ArrayIndexOutOfBoundsException。創建像

double[][] y = new double[100][3]; 

,或者你可以簡單地把值(在這種情況下,你並不需要創建如上給出的二維數組)

y[i][0] = Double.parseDouble(line[2]); 
+2

你必須通過一個錯誤的關閉;)另外,我的ESP是告訴我,什麼OP *意味着*要做的就是值存儲在'值Y [i] [0]' –

相關問題