我有代碼大致是這樣的: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