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