在编写程序时,我遇到了一个奇怪的情况。我需要知道for loop
是否正常结束,还是break
结束。有没有办法知道这个?
答案 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。