有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java redux中打破嵌套循环

本页后续内容:Breaking out of nested loops in Java

这段代码运行得很好(是数独解算器的一部分,所以p是一个9x9表):

int r = 0, c = 0;
out:
for(r = 0; r < 9; ++r){
  for (c = 0; c < 9; ++c){
    if (p[r][c] == 0){
      break out;
    }
  }
}
// do stuff with 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

由于rc是在循环之上定义和初始化的,这些块应该做完全相同的事情,但它们没有。有人知道为什么会这样吗


共 (1) 个答案

  1. # 1 楼答案

    是的,问题是第二个循环需要c重置为0,否则它只会在外部循环的第一次迭代中运行。第二次通过(例如,当r = 1c将已经是9并且不会输入循环体。所以,你需要

    for (c = 0 ; c < 9; ++c){
    

    或者

    for( ; r < 9; ++r){
      c = 0;