Java中的跳线?

Java中的跳线?,java,goto,Java,Goto,是否有任何语法允许您从一行跳到另一行 例如: System.out.println("line"); System.out.println("line2"); System.out.println("line3"); System.out.println("line4"); //goto line2 or something like that?? Java中没有goto,尽管它是一个保留关键字 goto被认为是一种糟糕的编程构造,因此被排除在Java之外。Java中没有goto,尽管它是一

是否有任何语法允许您从一行跳到另一行

例如:

System.out.println("line");
System.out.println("line2");
System.out.println("line3");
System.out.println("line4");

//goto line2 or something like that??

Java中没有goto,尽管它是一个保留关键字


goto被认为是一种糟糕的编程构造,因此被排除在Java之外。

Java中没有goto,尽管它是一个保留关键字


goto被认为是一种糟糕的编程构造,因此被排除在Java之外。

您可以通过迂回的方式实现这一点,例如使用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
while
循环。

您可以通过迂回的方式实现这一点,例如使用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
while
循环。

您到底想要实现什么?您可以像中一样使用标签,无论如何,使用goto-like语句可能会产生意大利面代码

您到底想要实现什么?您可以像中一样使用标签,无论如何,使用goto-like语句可能会导致出现意大利面代码

do {
    //do stuff
    if (condition) break; //this will jump--+
    //do stuff                           // |
} while (false);                         // |
// here <-----------------------------------+

不,没有
goto
语句,但有几个解决方法:

do {
    //do stuff
    if (condition) break; //this will jump--+
    //do stuff                           // |
} while (false);                         // |
// here <-----------------------------------+
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。这是为了鼓励(强制)您使用适当的条件构造构建控制流

在您的示例中,正确的方法是while循环:

System.out.println("line");
while (true) {
    System.out.println("line2");
    System.out.println("line3");
    System.out.println("line4");
}

如果您仔细想想,没有任何代码流模式不需要goto就无法表达(可能需要偏离个人根深蒂固的习惯)。您可能希望使用goto的唯一时间是避免代码重复。如果遇到这种情况,将代码重新构造成一个单独的方法,在需要时可以调用,这是一个更干净的解决方案。

您可以创建方法,每个方法都包含一行,并在需要模拟时调用它们。
goto
您可以创建方法,它们中的每一个都包含一行,并在您想要模拟
goto
Marko时调用它们,Marko巧妙地利用了java开关的后续功能;e、 g.如果lineNum=2,那么案例2、3、4都运行。Marko巧妙地利用了java switch的后续功能;e、 g.如果lineNum=2,则案例2、3、4都将运行。可以,是。但是仅仅因为一个特性可能导致糟糕的代码,这个特性本身并不糟糕……我同意,这个主题可能导致进一步讨论goto是否有用,但在我使用允许goto表达式的语言的特殊经验中,我只能看到意式通俗语代码。除此之外,这样的事情随时都可能发生。但在概率率
1E-40
及以下,我将承担风险:-)可以,是的。但是仅仅因为一个特性可能导致糟糕的代码,这个特性本身并不糟糕……我同意,这个主题可能导致进一步讨论goto是否有用,但在我使用允许goto表达式的语言的特殊经验中,我只能看到意式通俗语代码。除此之外,这样的事情随时都可能发生。但在概率率
1E-40
及以下,我将承担风险:-)