如何使用嵌套的if/else-if来中断我的do



这是我的代码,但我不得不承认,我有点代码盲,似乎看不到问题,尽管我觉得这是一个简单的问题。任何帮助都将不胜感激。提前谢谢。

do{
System.out.println("Command:");
scan = new Scanner (System.in);
String line;                        
line = scan.nextLine();
String[]SplitUpText;
SplitUpText=line.split(" ");
Command = SplitUpText[0];
int param1=-1, param2=-1;
if (Command.compareTo("move")==0)
{
if (SplitUpText.length>1)
{
param1=Integer.parseInt(SplitUpText[1]);
if(SplitUpText.length>2)
{
param2=Integer.parseInt(SplitUpText[2]);
}
}g.moveTo (param1, param2);

}else if(Command.compareTo("circle")==0){
if (SplitUpText.length>1)
{
param1=Integer.parseInt(SplitUpText[1]);
}g.circle (param1);
}else if(Command.compareTo("line")==0){
if (SplitUpText.length>1)
{
param1=Integer.parseInt(SplitUpText[1]);
if(SplitUpText.length>2)
{
param2=Integer.parseInt(SplitUpText[2]);
}
}g.lineTo (param1, param2);
} else {
System.out.println("Invalid Command");
}
} while (Command.compareTo ("end")!=0);

通常最好避免它(通过向while表达式添加条件),但如果您想提前结束循环,可以使用break;

这里有一个更简单的例子:

int i;
i = 0;
do {
++i;
System.out.println("Before: " + i);
if (someSpecialCondition) {
break;
}
System.out.println("After: " + i);
}
while (i < 5);

假设i刚变成3时出现特殊情况,输出为:

之前:1之后:1之前:2之后:2之前:3

注意break是如何终止循环的。它可以与所有类型的环路(do..whilewhile和两种for)一起使用。

如果您有嵌套的循环,并且需要从内部循环中断外部循环,那么您可能应该将代码重构为子方法。但是,如果您不想重构,可以使用定向break:

int i, j;
outerLoop: for (i = 0; i < 5; ++i) {
for (j = 0; j < 5; ++j) {
if (i == 2 && j == 2) {
break outerLoop;
}
}
}

在那里,outerLoop标记外循环,break outerLoop使内循环和外循环都终止。不过,如果你开始这样做,可能是时候重构了。

JLS提供的更多信息:http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.15

考虑使用break语句。

最新更新