优化: while (true)

Sam*_*son 5 java loops break infinite while-loop

我正在使用一个

while (true)
{
    if (x == y)
    {
        break;
    }
    else
    {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样循环,该框架只是一个示例框架,因为实际代码本身非常复杂且过于复杂,需要“break;” 在多个不同区域针对多个不同条件进行声明。我的问题是;有没有一种方法可以编写循环语句而不需要循环检查条件?除了 while(true) 之外,还有更有效的方法来编写无限循环吗?

编辑:(java)

编辑2:

while (a < b)
{
    while (true)
    {
        if (c < d)
        {
            if (e == null)
            {
                //do alot of stuff
                break;
            }
            else
            {
                //do something
            }
        }
        else if (d > c)
        {
            if (e == null)
            {
                //do alot of stuff
                break;
            }
            else
            {
                //do something
            }
        }
        else if (d == c)
        {
            break;
        }
    }
    a = a + 1;
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*sen 0

对于您的特定示例,您可以将语句中的中断逻辑if移至条件while

while (x != y) {
    // do stuff
}
Run Code Online (Sandbox Code Playgroud)

事实上,如果您的原始while循环有多个中断条件,您也许可以将它们全部移动到该while条件,例如

while (!cond1 && !cond2 ... ) {
    // execute
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然第二个示例可能有效,但我经常发现在这种情况下,“cond{i}”的值在循环体执行期间发生变化,通常是在评估它们以触发中断之前。 (2认同)
  • @schwobaseggl我当然是在猜测,因为我们不知道OP的实际代码(当我们发现它要复杂得多时就做好准备)。不过我同意你的评论。 (2认同)