为了账号安全,请及时绑定邮箱和手机立即绑定

优化: while (true)

优化: while (true)

Helenr 2023-09-06 16:38:00
我正在使用一个while (true){    if (x == y)    {        break;    }    else    {        //do stuff    }}像这样循环,该框架只是一个示例框架,因为实际代码本身非常复杂且过于复杂,需要“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;}
查看完整描述

3 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

有没有一种方法可以编写循环语句而不需要循环检查条件?除了 while(true) 之外,还有更有效的方法来编写无限循环吗?

您可以通过多种方式编写无限循环,但它们都是等效的。两者实际上并不比其他方法更有效:

  1. while (true) { ... }

  2. do { ... } while (true);

  3. for (;;) { ... }

根据实际代码,将“中断循环逻辑”反转为“继续循环逻辑”可能是有意义的,如下所示:

boolean continueLoop;

do {

    continueLoop = false;


    // ... do stuff ...


    if ( some condition ) {

        continueLoop = true;

    }


    // ... do stuff ...


} while (continueLoop);


查看完整回答
反对 回复 2023-09-06
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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


while (x != y) {

    // do stuff

}

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


while (!cond1 && !cond2 ... ) {

    // execute

}


查看完整回答
反对 回复 2023-09-06
?
动漫人物

TA贡献1815条经验 获得超10个赞

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

查看完整回答
反对 回复 2023-09-06
  • 3 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信