无法弄清楚ArrayIndexOutofBoundsException错误

时间:2013-12-05 21:04:36

标签: java

提前感谢您的反馈。我无法理解下面代码片段中的ArrayIndexOutofBoundsException错误。对你们任何人都很明显吗?

public void run() {
   int x = 10;
   int y = 10;

    double[][] Lx = new double[x][y];
    double[][] Ly = new double[x][y];

    for (int i=0; i<Lx.length; i++) {
        for (int j=0; j<Lx[0].length; i++) {
            Lx[j][i] = 2*j+i-1;
            Ly[j][i] = Math.sqrt(3)*(i-1);
        }
    }
}

3 个答案:

答案 0 :(得分:5)

j for循环在递增i而不是j时不正确。变化

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

for (int j=0; j<Lx[0].length; j++) {

此外,您的数组访问索引是向后的。变化

Lx[j][i]

Lx[i][j]

Ly一样。否则你会得到一个翻转的2D数组。

答案 1 :(得分:0)

除了@ rgettman的回答

在此处,xy相同,因此Lx[0].length不会出现任何问题。但最好使用Lx[i].length

Lx[0].length始终指定0th行中的列的长度或数量。但是Lx[i].length会给出ith行中的列的长度或数量。

因此,如果您的x和y不同,则不会再次获得ArrayIndexOutBoundException。

答案 2 :(得分:0)

嵌套的for循环中应该j++而不是i++

最好不要将ij用于索引,因为它们看起来太相似了。

ikij

更加鲜明