这是我的代码,但我不得不承认,我有点代码盲,似乎看不到问题,尽管我觉得这是一个简单的问题。任何帮助都将不胜感激。提前谢谢。
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..while
、while
和两种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语句。