如何知道循环如何结束

时间:2013-06-19 17:06:25

标签: java for-loop break

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

4 个答案:

答案 0 :(得分: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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分: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将为true,否则将为false。