-8

在编写程序时,我遇到了一个奇怪的情况。我需要知道 a 是否for loop正常结束,还是由于break. 有没有办法知道这一点?

4

4 回答 4

5

不要使用break,而是一个附加条件:

boolean stop = false;
for (int i = 0; i < N && !stop; i++) {
    ...
    stop = true;   // instead of break
}

if (stop) {
    // whatever you want to do on break
}

这至少是我学习它的方式,因为它可以让你对你的程序进行推理。循环之后,我们知道

!(i < N && !stop)

这相当于

i >= N || stop

这有关系吗?也许不是在现实生活中,但在学术界,人们喜欢证明他们的代码的属性:-)

于 2013-06-19T17:08:08.110 回答
2

您可以在 for 循环之前设置一个布尔变量(BreakExecuted 或其他东西)等于 false,然后在每次中断之前将其设置为 true。

于 2013-06-19T17:08:45.773 回答
0

唯一为此提供语法的语言是 python,即使在那里它也不是很流行。

这个问题在搜索循环中很常见,通常的解决方案是维护一个额外的标志,例如has_found,它被初始化为 false,并在发出 break 之前设置为 true。在 for 循环之外,您只需检查has_found标志。

于 2013-06-19T17:10:21.557 回答
0

这个怎么样:

boolean normalFinish = false;
for (int i = 0; i < N && !stop; i++) {

    //first statement of loop
    normalFinish = false;

    ...

    // last statement of loop
    normalFinish  = true;   
}

if(normalFinish) {
   System.out.println("Finished normally");
}

这个想法是,如果循环正常完成, normalFinish 将为真,否则为假。

于 2013-06-19T17:21:47.003 回答