我有代码大致是这样的:break语句不工作
START
Recursive method A
print("Before Loop")
loop:
for(Object o: list)
{
print("Outer loop top")
for(Object ob: list2)
{
print("Inner loop top")
//do stuff with o & ob e.g. recursively call method A under certain conditions
if(someCondition true)
{
print("Entered")
break loop;
}
print("Inner loop bottom")
}
print("Outer loop bottom")
}
print("After Loop")
END
当程序进入if语句,其中someCondition是真实的它打印
Entered
,然后它似乎打破从这两个for循环成功,因为它下次打印
After Loop
然后!在控制台打印
inner loop bottom
Outer Loop bottom
Outer loop top
inner loop top
etc.
这怎么可能。方法A从多于一个地方递归地调用,但是,如果因为该方法以递归方式再次开始而下一次打印“内部循环底部”的原因,则它不会首先打印“内部循环底部”!但是“Before loop”和“Outer loop top”,然后会打印“Inner loop top”和THEN“inner loop bottom”。根据打印语句,它从两个循环中断开,然后跳回到内循环的底部,并继续在内循环中循环。到底是怎么回事。请帮忙!谢谢
感谢您的回复。好吧,我的break语句嵌套在标签语句中,很明显,通过打破外部循环我也打破了内部循环,所以你提出的是错误的?我试过使用没有标签的break语句从内部循环中断开,然后使用someCondition = true变量从外部循环中断开。并打印出“After loop”,这意味着它的工作,但它然后再次打印“内循环底部”。 :/ – user2240342
那么这似乎有点依赖于机器..因为在我的电脑相同的程序给出了类似的,但在其他顺序输出..尝试更换标签的位置或打破没有标签。但是,恐怕没有标签的打破只会导致内循环突破。类似的事情可以在外部循环完成.. –
我试过了,(请参阅我以前的评论),它以相同的方式响应:/ – user2240342