首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化: while (true)

优化: while (true)
EN

Stack Overflow用户
提问于 2019-09-27 14:24:27
回答 3查看 568关注 0票数 5

我正在使用一个

代码语言:javascript
复制
while (true)
{
    if (x == y)
    {
        break;
    }
    else
    {
        //do stuff
    }
}

循环就像这样,框架只是一个示例框架,因为实际代码本身是复杂的,它需要在多个不同区域中针对多个不同条件使用"break;“语句。我的问题是:有没有一种方法可以编写一条循环语句,而根本不需要循环检查条件?有没有比while(true)更有效的方法来编写无限循环呢?

编辑:(java)

edit2:

代码语言:javascript
复制
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;
}
EN

回答 3

Stack Overflow用户

发布于 2019-09-27 14:49:32

有没有一种方法可以编写一条循环语句,而不需要对条件进行循环检查?有没有比while(true)更有效的方法来编写无限循环呢?

您可以用多种方式编写无限循环,但它们都是等价的。这两个都不是真正比其他的更有效:

  1. while (true) { ... }
  2. do { ... } while (true);
  3. for (;;) { ... }

根据实际代码,将“-loop-logic”反转为“ -loop-logic”可能是有意义的,如下所示:

代码语言:javascript
复制
boolean continueLoop;
do {
    continueLoop = false;

    // ... do stuff ...

    if ( some condition ) {
        continueLoop = true;
    }

    // ... do stuff ...

} while (continueLoop);
票数 1
EN

Stack Overflow用户

发布于 2019-09-27 14:27:02

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

代码语言:javascript
复制
while (x != y) {
    // do stuff
}

实际上,如果您的原始while循环有多个中断条件,您也许能够将它们都转移到while条件,例如

代码语言:javascript
复制
while (!cond1 && !cond2 ... ) {
    // execute
}
票数 0
EN

Stack Overflow用户

发布于 2019-09-27 14:37:10

是的,有很多方法可以做到这一点。例如,您可以在循环外声明一个变量,根据变量值设置一个条件,然后在循环内重置该变量,因此循环将在不检查内部条件的情况下无限运行。

请阅读以下示例:- https://en.wikipedia.org/wiki/Infinite_loop

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58128919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档