gpt4 book ai didi

Java for 和 while 循环没有按预期工作

转载 作者:行者123 更新时间:2023-12-01 13:36:42 24 4
gpt4 key购买 nike

这段代码(Java)不起作用,我不明白为什么。

int[][] arr = {{0, 0, 0}, {0, 1, 0}, {0, 0, 0}};

for(int a = 0; a < arr.length; a++) {
for(int b = 0; b < arr[a].length;) {
int c = 1;
if (arr[a][b] == 0) {
while((arr[a][(b+c)] == 0) && ((b+c)!=(arr[a].length-1))) {
c++;
}
addBar(b, a, c); // Use these values in another function...
b = b + c;
} else {
b++;
}
}
}

问题:b < arr[a].length;没有得到尊重并再次循环。我做错了什么?

最佳答案

您正在调用此:

while ((arr[a][(b + c)] == 0) && ((b + c) != (arr[a].length - 1)))

其中隐藏着arr[a][(b + c)],并且c始终等于1。所以你的 b == 2 在最后一个 for 循环开始时,一切都很好,它进入循环,并且你正在访问 b+c 元素 (2+1),但内部数组中只有 3 个元素,最大索引不能大于2!

这就是你的错误。第一个循环:

  int c = 1;//b==0
if (arr[a][b] == 0) {//arr[0][0] - correct
while((arr[a][(b+c)] == 0) && ((b+c)!=(arr[a].length-1))) {
c++; //c == 2
}
addBar(b, a, c); // Use these values in another function...
b = b + c; //b == 0 + 2 == 2
} else {
b++;
}

第二个循环:

  int c = 1;//b== 2
if (arr[a][b] == 0) {//arr[0][2] - correct
while((arr[a][(b+c)] == 0) //ERROR!!! b+c == 3!!!

关于Java for 和 while 循环没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com