以下Java库代码如何退出while(true)循环?

时间:2011-04-26 21:24:50

标签: java logic while-loop

我正在查看TimSort java代码:Original Source 特别是mergeLo函数的第676到739行。它(大致)有以下布局:

outer:
    while (true) {
        //Code here
        break outer; //Code within a few if tests in the loop.
    }
    //Code here executes somehow.

我对此函数如何停止运行感到困惑,因为唯一的break语句转到外部块(然后应该回到while(true),并且没有返回语句。

我的问题是,当我尝试对184个或更多元素进行排序时,第747行正在执行并抛出异常,我想弄清楚如何修复它,任何帮助都将不胜感激。

[注意]:这是部署在Android手机上的Java集合调用函数。

4 个答案:

答案 0 :(得分:7)

标签'outer'只是while循环的别名。也就是说,break语句打破了循环,控制流在循环之后继续。

相反,继续外部将返回到while循环的顶部。

答案 1 :(得分:1)

outer实际上标记了while循环,而不是它之前的行,因此它在破坏后不会重新进入...它不是goto。 =)

答案 2 :(得分:0)

break outer;会让您离开while(true)循环。它不会回到循环中。您是否将breakcontinue混淆了?

答案 3 :(得分:0)

你应该看一下syntax of break statements

我认为您将break语句视为goto语句。他们是两个不同的东西。带有包含标签的break语句突破了标签指向的语句。

该链接应该有用。