如何在满足条件后从循环中断开

时间:2013-04-29 00:27:41

标签: java loops while-loop break

嗨,我一直试图在过去一小时内摆脱这个循环并继续,因为已经满足了我的条件一次。我的应用程序几乎读取一系列行并分析它然后打印所述的变量。线条如何显示的例子(不包括。):

  • 10 c = 9 + 3
  • 20 a = c + 1
  • 30 print c
  • 40 goto 20
  • 50结束

它做的一切正确,当它到达第40行时按预期进入第20行,但我希望它转到第50行,因为已经进入第40行一次。这是我的这部分代码:

while(booleanValue)
{
    if(aString.substring(0, 4).equals("goto"))
    {
        int chosenLine = Integer.parseInt(b.substring(5));
        if(inTheVector.contains(chosenLine))
        {
            analizeCommands(inTheVector.indexOf(chosenLine));
            i++;
        }
        else
        {
            System.ou.println("Line Was Not Found");
            i++;
        }
    }

    else if(aString.substring(0, 3).equals("end"))
        {
            System.out.println("Application Ended");
            booleanValue = false;
        }
}

2 个答案:

答案 0 :(得分:6)

一旦满足条件,使用break语句完全打破循环。 Pol0nium使用continue的建议不正确,因为它只停止循环的当前迭代。

while(foo)
{
    if(baz)
    {
        // Do something
    }
    else
    {
        // exit condition met
        break;
    }
}

所有这些都说过,良好的形式决定了你想要干净的进入和退出点,以便观察者(也许你自己,以后重新访问代码)可以轻松地遵循它的流程。考虑改变控制while循环本身的布尔值。

while(foo)
{
    if(baz)
    {
        // Do something
    }
    else
    {
        // Do something else
        foo = false;
    }
}

如果由于某种原因,您无法触摸控制while循环的布尔值,则只需要使用一个标记来复合条件,以控制您的while:

while(foo && bar)
{
    if(baz)
    {
        // Do something
    }
    else
    {
        // Do something else
        bar = false;
    }
}

答案 1 :(得分:0)

您可以按原样使用booleanValue保留代码并切换到do-while循环。

do {
 // ... existing code
} while (booleanValue);

但是,要回答您的具体问题 - 您始终可以使用java break关键字。 continue关键字更多用于跳过循环块的其余部分并进入另一个循环迭代。

如果你在检查之前把它放在其他任何东西上,你会立即退出循环。

if(aString.substring(0, 3).equals("end")) {
    break;
}

作为附加提示,您可能希望使用String.contains("end")String.endsWith("end")而不是substring()。这样,如果使用1或3位(或更多)数字,您的代码仍然有效。