在Java redux中打破嵌套循环
本页的后续行动: 这段代码工作得很好(是数独解算器的一部分,因此p是一个9x9表):在Java redux中打破嵌套循环,java,Java,本页的后续行动: 这段代码工作得很好(是数独解算器的一部分,因此p是一个9x9表): intr=0,c=0; 输出: 对于(r=0;r
intr=0,c=0;
输出:
对于(r=0;r<9;++r){
对于(c=0;c<9;++c){
如果(p[r][c]==0){
爆发
}
}
}
//用r,c做些事情
但是这个代码失败了!唯一的变化是for循环的“init”部分是空的
int r = 0, c = 0;
out:
for( ; r < 9; ++r){
for ( ; c < 9; ++c){
if (p[r][c] == 0){
break out;
}
}
}
// processes first row of array as it should, then breaks out with r=9, c=9
intr=0,c=0;
输出:
对于(;r<9;++r){
对于(;c<9;++c){
如果(p[r][c]==0){
爆发
}
}
}
//按应处理数组的第一行,然后以r=9、c=9中断
由于
r
和c
是在循环上方定义和初始化的,因此这些块应该做完全相同的事情,但它们没有。有人知道为什么会这样吗?是的,问题是第二个循环需要将c
重置为0
,否则它将只在外部循环的第一次迭代中运行。第二次通过(例如,当r=1
时)c
将已经是9
,并且不会输入循环体。所以,你需要
for (c = 0 ; c < 9; ++c){
(c=0;c<9;++c)的{
或者
(;r<9;++r)的{
c=0;
您的内循环只执行了一轮外循环,因此它永远不会满足计算c
for (c = 0 ; c < 9; ++c){
for( ; r < 9; ++r){
c = 0;