是否有任何语法允许您从一行跳转到另一行?
例子:
System.out.println("line");
System.out.println("line2");
System.out.println("line3");
System.out.println("line4");
//goto line2 or something like that??
不,没有goto
声明,但有几种解决方法:
do {
//do stuff
if (condition) break; //this will jump--+
//do stuff // |
} while (false); // |
// here <-----------------------------------+
和
int id = 0;
while (true) {
switch (id) {
case 0:
//do stuff
if (condition) {id = 3; break;} //jumps to case 3:
case 1:
if (condition) {id = 1; break;} //jumps to case 1:
// ...
}
}
您可以通过迂回的方式实现这一点,例如使用 switch 语句:
switch (lineNum) {
case 1: System.out.println("line 1");
case 2: System.out.println("line 2");
case 3: System.out.println("line 3");
case 4: System.out.println("line 4");
}
现在您必须确保lineNum
具有适当的值。
对于任何向后跳跃,您都需要一个do
orwhile
循环。
Java故意不支持 goto。这是为了鼓励(强制)您使用适当的条件构造来构建控制流。
在您的示例中,正确的方法是 while 循环:
System.out.println("line");
while (true) {
System.out.println("line2");
System.out.println("line3");
System.out.println("line4");
}
如果你仔细想想,没有任何代码流模式是不需要 goto 就无法表达的(它可能需要偏离个人根深蒂固的习惯)。您可能想要使用 goto的唯一时间是避免代码重复。如果遇到这种情况,将代码重组为一个可以在需要的地方调用的单独方法是一个更简洁的解决方案。
Java 中没有 goto,尽管它是保留关键字。
goto 被认为是一个糟糕的编程结构,因此被排除在 Java 之外。
你到底想达到什么目的?您可以使用标签,如http://geekycoder.wordpress.com/2008/06/25/tipjava-using-block-label-as-goto/,无论如何使用 goto like 语句可能会导致意大利面条代码