2015-02-22 4 views
0

Я пытаюсь увеличить размер двумерного массива динамически. Тем не менее, я получаю ошибку Array out of Bounds. Ниже представлен код. В этом случае я пытаюсь динамически добавлять значения к двумерному вектору weight[][] при некотором условии. Любые предложения были бы очень полезными!Невозможно увеличить размер массива динамически в java

class perceptron { 
    public static void main(String[] args) { 
     int[][] myPoints = {{2,3},{4,5},{7,8},{9,10}}; 
     int [] classlabels = {1,1,-1,-1}; 
     int [] [] weight = {{0,0}}; 
     int base=0; 
     int i,j; 
     int activation=0; 

     for(i=0;i<myPoints.length;i++) { 
      for(j=0;j<classlabels.length;j++) { 

       activation = activation+((myPoints[i][0]*weight[i][0])+(myPoints[i] 
         [1]*weight[i][1])); 

       System.out.println("dot product of two vectors" + activation); 
       if((activation*classlabels[j]) <= 0) { 
        System.out.println("hi"); 

        weight[i+1][0] = weight[i][0]+ (classlabels[j]*myPoints[i] 
          [0]); 
        weight [i+1][1] =weight[i][1]+(classlabels[j]*myPoints[i] 
          [1]); 

        System.out.println(weight[i+1][0]); 
        System.out.println(weight[i+1][1]); 

        base = base+classlabels[j]; 
        System.out.println(base); 
       } 
      } 
     } 
    } 
} 

ответ

2

Ядра массивов строго фиксированного размера. Вы должны использовать ArrayList.

Пример:

ArrayList<ArrayList<Double>> weights = new ArrayList<>(); 
weights.add(new ArrayList<Double>()); // extend to be 1x0 
weights.get(0).add(1.2); //weights[0][0]=1.2 
weights.get(0).add(2.3); // weights[0][1]=2.3 
Смежные вопросы