【问题标题】:How to jump over a particular set of statements in Java [duplicate]如何跳过Java中的一组特定语句[重复]
【发布时间】:2013-07-15 13:33:29
【问题描述】:
public class Try {


public static void main(String[] args) {
int i=0;
    while(i<10)
    {
        System.out.println("Hello World");

        if (i==6)
        {
            // The Execution pointer should go back to this statement (int i=0);
        }
        i++;
    }

}
}

我们在 VB 中使用goto 关键字将执行指针放在特定的语句集上。请告诉我这在 Java 中是如何实现的。我们如何将执行指针放在特定的语句集上?

【问题讨论】:

  • 看这里stackoverflow.com/questions/2545103/…可能对你有帮助
  • 虽然大多数人会建议使用continue,但我更想问为什么会有这么奇怪的设计,这是一个很好的正当理由吗?如果有,请解释。
  • 我完全同意@LuiggiMendoza。此外,如果您跳转到int i=0;。程序执行将一次又一次地进入while循环,这将形成一个无限循环。这就是为什么你不应该使用无条件跳转。预测程序执行更难。

标签: java


【解决方案1】:

Java 有标准的关键字:

break;

将退出循环。

continue;

将跳转到循环的开始。 此外,如果您有“循环内循环情况”,您可以使用标签。

label1: while(true){
    ...
    label2: while(true){
        ...
        break label2;
        ...
     }
     ...
}

【讨论】:

    【解决方案2】:
    1. 您的代码不会将指针移动到int i=o,它只会移动到while循环。

    2. 它会进入无限循环,因为你添加了i=o in if(i==6) 条件。

    所以这是完全错误的。

    【讨论】:

      【解决方案3】:

      您需要使用标记为 continue ,但编写意大利面条代码是一种不好的做法。

      somepoint: { int i=0;
      while(i<10)
      {
          System.out.println("Hello World");
      
          if (i==6)
          {
             continue somepoint;
          }
          i++;
      }
      }
      

      阅读JLS 14.7 了解标签声明

      与 C 和 C++ 不同,Java 编程语言没有 goto 语句;标识符语句标签与出现在标记语句中的任何位置的 break (§14.15) 或 continue (§14.16) 语句一起使用。

      Oracle tutorial

      根据JLS 3.9

      关键字 const 和 goto 是保留的,即使它们当前没有使用。如果这些 C++ 关键字错误地出现在程序中,这可能允许 Java 编译器生成更好的错误消息。

      另请阅读Should I avoid using Java Label Statements?

      【讨论】:

      • 这段代码包含了一个无限循环,但它很好地回答了OP的问题。
      • @erencan IMO 试图用另一个糟糕的设计解决一个糟糕的设计的答案不能被认为是好的 =\
      • +1 @erencan 我同意infinite 循环。
      • 这不会编译..
      • @TheNewIdiot IMO 给出一个简单的 use continue 建议很容易(否则请查看所有其他答案),但可以解决真正的问题:糟糕的设计我们专业的软件工程师必须做的,否则我们只是猴子程序员。顺便说一句,您的回答建议即使有这样一个简单的场景,您也应该使用continue 语句而不是while(true) 来编写无限循环(这是一个更糟糕的设计)。
      【解决方案4】:

      这里的continue语句是The continue Statement的解释

      【讨论】:

        【解决方案5】:

        试试这个

           public class Try {
        
        
           public static void main(String[] args) {
           int i=0;
           while(i<10)
           {
            System.out.println("Hello World");
        
            if (i==6)
            {
              i=0;
              continue;  // The Execution pointer should go back to this statement (int i=0);
            }
            i++;
            }
        
          }
         }
        

        【讨论】:

          【解决方案6】:

          goto 在 Java 中已被删除,因此您无法使用它。您必须使用continuebreak

          请不要真的这样做。正确设计的代码不需要跳转到代码中的特定行。当我十几岁开始编程时,goto 在 BASIC 中是一个简单的拐杖,但它仍然是一个拐杖。

          也请阅读:Go To Statement Considered Harmful

          【讨论】:

          • goto 被删除了吗?包含为关键字并用于将来的目的
          • @ajduke 它包含在 Java 的第一个版本中,然后被删除,但 goto 语句仍然作为关键字但什么都不做。
          • 它作为有效函数被删除,但仍作为关键字存在。
          • 哦,从来不知道。
          • goto 仅被不了解如何正确使用它的人认为是有害的......在 Java 中虽然它几乎没有用处(有标记的语句,但确实有用处)
          【解决方案7】:

          java 中没有goto。您可以通过

          i=0;
          while(i<10)
          {
              System.out.println("Hello World");
          
              if (i==6)
              {
                  i=0;
                  continue;
              }
              i++;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-22
            相关资源
            最近更新 更多