2014-01-06 82 views
-2

我有異常在線程「main」java.lang.ArrayIndexOutOfBoundsException:錯誤。 Eclipse中說,我認爲這是在代碼錯誤「main」java.lang.ArrayIndexOutOfBoundsException

  myArray[i][j] = tmpDouble; 

這種說法,但我不知道爲什麼。

代碼:

public class MyClass { 

    private int N; 
    private double[][] myArray = new double[N][N]; 
    private ArrayList<anObject> myList; 

    public MyClass(ArrayList<anObject> aList){ 

     myList = new ArrayList<anObject>(); 
     myList = aList; 

     HashSet<String> uniqueSet = new HashSet<String>(); 

     String[] anArray = uniqueSet.toArray(new String[uniqueSet.size()]); 
     N = uniqueSet.size(); 
     for (int i=0;i<N;i++){ 
      for (int ii=0;ii<N;ii++){ 
       myArray[i][ii] = 0.0; 
      } 
     } 
    } 
    for (int i=0;i<N;i++){ 
      //if (i==j)myArray[i][j]=0; 
      for(anObject s : myList){ 
       if (s.getName1().equals(arrayNameOfHashSet[i])){ 
        tmpDouble = Math.abs(s.getScore1()-s.getScore2()); 
        tmpString = s.getName2(); 
        for (j=0;j<N;j++){ 
         if (s.getName2().equals(arrayNameOfHashSet[i])){ 
          break; 
         } 
        } 
       } 

      myArray[i][j] = tmpDouble; 
      } 
    } 

} 
+0

剛纔那個'j'來自哪裏...?你的內循環使用'ii'作爲計數器。 –

+0

這裏'j'是什麼? –

+0

這裏'j'是什麼? –

回答

1

你的陣列myArray已尺寸0 您需要重新初始化:

N = uniqueSet.size(); 
myArray = new double[N][N]; 
+1

謝謝!我不知道它沒有初始化..... –

+0

檢查更新請,你可以爲什麼我有同樣的錯誤更新代碼? –

+0

同樣的原因,你只是在'private int N;'中用'N = 0'初始化你的數組。然後嘗試爲數組中的任何元素設置值,儘管大小仍爲0.在第一種情況下,'N = uniqueSet.size();'因爲空'HashSet',您又有'N = 0'錯過一個循環。 – Alex

1
HashSet<String> uniqueSet = new HashSet<String>(); 

    private int N= uniqueSet.size(); // assign some value to N 
    private double[][] myArray = new double[N][N]; 
相關問題