提前感谢您的反馈。我无法理解下面代码片段中的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);
}
}
}
答案 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的回答
在此处,x
和y
相同,因此Lx[0].length
不会出现任何问题。但最好使用Lx[i].length
。
Lx[0].length
将始终指定0th
行中的列的长度或数量。但是Lx[i].length
会给出ith
行中的列的长度或数量。
因此,如果您的x和y不同,则不会再次获得ArrayIndexOutBoundException。
答案 2 :(得分:0)
嵌套的for循环中应该j++
而不是i++
。
最好不要将i
和j
用于索引,因为它们看起来太相似了。
i
和k
比i
和j