嵌套for循环中的ArrayIndexOutOfBoundsException?

时间:2014-02-10 07:04:23

标签: java indexoutofboundsexception

我不知道为什么我在嵌套的for循环中得到ArrayIndexOutOfBoundsException ...它只打印第一个内部for循环而从不进入外部for循环。
谁能告诉我为什么会这样?

public static double weight(){
    //int counter = 0;
    System.out.println("####" + d);
    while(Math.abs(delta_w) > 0.001){
        for(int i = 0; i < 33; i++ ){

            for(int j = 0; j < 13; j++ ){

                if(Math.abs(delta_w)!=0){

                    value = d.exData[i][j];    //?

                    y = d.exLabels[i];

                    percep = w * d.exData[i][j];
                    System.out.println(d.exData[i][j]);
                    delta_w = y - percep;

                    w+= delta_w;
//                  counter++;
                    System.out.println("value w " + w);
                }
            }
        }
    }

    return w;
}

1 个答案:

答案 0 :(得分:0)

最可能的原因是'd.exData.length == 1'

为什么假设数组大小为33和13?为什么不使用数组的计数呢?

public static double weight(){
    //int counter = 0;
    System.out.println("####" + d);
    while(Math.abs(delta_w) > 0.001){
        for(int i = 0; i < d.exData.length; i++ ){

            for(int j = 0; j < d.exData[i].length; j++ ){

                if(Math.abs(delta_w)!=0){

                    value = d.exData[i][j];    //?

                    y = d.exLabels[i];

                    percep = w * d.exData[i][j];
                    System.out.println(d.exData[i][j]);
                    delta_w = y - percep;

                    w+= delta_w;
                    //counter++;
                    System.out.println("value w " + w);
                }
            }
        }
    }

    return w;
}