嗨,我一直试图在过去一小时内摆脱这个循环并继续,因为已经满足了我的条件一次。我的应用程序几乎读取一系列行并分析它然后打印所述的变量。线条如何显示的例子(不包括。):
它做的一切正确,当它到达第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;
}
}
答案 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位(或更多)数字,您的代码仍然有效。