首頁 >Java >java教程 >Java支援Goto嗎?

Java支援Goto嗎?

王林
王林轉載
2023-09-05 23:33:071045瀏覽

Java支援Goto嗎?

Java 以其一致性和多功能性而聞名。 Java 提供了幾種控制流主要方法。 Java 的字源結構缺乏控制流程說明,如「goto」語句所示。在這一部分中,我們將了解為什麼 Java 沒有 goto 函數、它的一些選項,以及如何使用它們來實現類似的目標。

文法

首先,我們來看看 Java 的語言結構。 goto 解釋可讓您根據名稱自由交換代碼部分。 Goto 在 C 和 C 中產生複雜的控制流,但程式碼通常不可讀且毫無價值。

label: {
   // Code section 1
   if (condition) {
      // Code section 2
      if (anotherCondition) {
         // Code section 3
         break label;
      } else {
         // Code section 4
         if (yetAnotherCondition) {
            // Code section 5
            if (finalCondition) {
               // Code section 6
            }
         }
      }
   }
   // Code section 7
}

語法解釋

Java 的作者省略了 goto 表達,因為它會使程式碼變得混亂並且難以理解。他們青睞結構化控制流,以獲得更清晰的程式碼和更少的錯誤。

演算法

Java 中用於管理控制流程的逐步演算法 -

  • 入口點- 程式的執行將從已選取的入口點開始,該入口點可以是主方法或另一個入口點。

  • 按順序執行 - 程式碼以連續的方式逐行運行,除非遇到控制流程解釋,在這種情況下執行會跳到下列斷言程式。

  • 建立迴圈的語句循環語句(包括 for、while 和 do-while 語句)允許重複程式碼區塊,直到滿足特定條件。

方法

即使 Java 沒有 goto,開發人員也找到了建立類似功能的方法。

方法 1:標籤和條件語句

說明

標籤可以標記程式碼段,條件表達式可以根據條件控制執行。 Goto 缺乏控制力和可讀性。

範例

public class GotoExample {
   public static void main(String[] args) {
      GotoExample program = new GotoExample();
      program.execute();
   }

   private void execute() {
      label: {
         System.out.println("Executing Code Section 1");
         // Code section 1
         if (condition) {
            System.out.println("Executing Code Section 2");
            // Code section 2
            if (anotherCondition) {
               System.out.println("Executing Code Section 3");
               // Code section 3
                  break label;
            } else {
               System.out.println("Executing Code Section 4");
               // Code section 4
               if (yetAnotherCondition) {
                  System.out.println("Executing Code Section 5");
                  // Code section 5
                  if (finalCondition) {
                     System.out.println("Executing Code Section 6");
                     // Code section 6
                  }
               }
            }
         }
         System.out.println("Executing Code Section 7");
         // Code section 7
      }
   }

   private boolean condition = true;
   private boolean anotherCondition = true;
   private boolean yetAnotherCondition = true;
   private boolean finalCondition = true;
}

輸出

Executing Code Section 1
Executing Code Section 2
Executing Code Section 3

說明

為了示範執行情況,我們將 System.out.println() 語句插入到每個程式碼部分。這使您可以追蹤執行情況並根據情況查看正在運行的內容。控制中心顯示代碼執行訊息。

方法2 用方法封裝

透過將程式碼封裝在方法中來建構Java控制流。透過將軟體分解為可管理的部分,方法呼叫讓我們可以瀏覽它。

範例

public class GotoExample {
   public static void main(String[] args) {
      GotoExample program = new GotoExample();
      program.execute();
   }

   private void execute() {
      section1();
      if (condition()) {
         section2();
         if (anotherCondition()) {
            section3();
            return;
         } else {
            section4();
            if (yetAnotherCondition()) {
               section5();
               if (finalCondition()) {
                  section6();
               }
            }
         }
      }
      section7();
   }

   private void section1() {
      System.out.println("Executing Code Section 1");
      // Code section 1
   }

   private void section2() {
      System.out.println("Executing Code Section 2");
      // Code section 2
   }

   private void section3() {
      System.out.println("Executing Code Section 3");
      // Code section 3
   }

   private void section4() {
      System.out.println("Executing Code Section 4");
      // Code section 4
   }

   private void section5() {
      System.out.println("Executing Code Section 5");
      // Code section 5
   }

   private void section6() {
      System.out.println("Executing Code Section 6");
      // Code section 6
   }

   private void section7() {
      System.out.println("Executing Code Section 7");
      // Code section 7
   }

   private boolean condition() {
      // Define the condition logic
      return true;
   }

   private boolean anotherCondition() {
      // Define the anotherCondition logic
      return true;
   }

   private boolean yetAnotherCondition() {
      // Define the yetAnotherCondition logic
      return true;
   }

   private boolean finalCondition() {
      // Define the finalCondition logic
      return true;
   }
}

輸出

Executing Code Section 1
Executing Code Section 2
Executing Code Section 3

說明

我加入了section3()、section4()、section5()、section6()和section7()方法。 Condition、anotherCondition、yetAnotherCondition 和 FinalCondition 被它們的過程所取代。這些方法適合您。

方法 3 狀態機

狀態機管理複雜的控制流程。狀態機以數學方式表示轉換。狀態機組織控制流程。

範例

enum State {
   STATE_1, STATE_2, STATE_3, STATE_4, STATE_5, STATE_6, STATE_7
}

public class GotoExample {
   public static void main(String[] args) {
      GotoExample program = new GotoExample();
      program.execute();
   }

   private void execute() {
      State currentState = State.STATE_1;

      while (currentState != State.STATE_7) {
         switch (currentState) {
            case STATE_1:
               section1();
               currentState = State.STATE_2;
               break;
            case STATE_2:
               if (condition()) {
                  section2();
                  currentState = State.STATE_3;
               } else {
                  currentState = State.STATE_4;
               }
               break;
               // Define other states and transitions
         }
      }
   }

   private void section1() {
      System.out.println("Executing Code Section 1");
      // Code section 1
   }

   private void section2() {
      System.out.println("Executing Code Section 2");
      // Code section 2
   }

   // Define other section methods and states

   private boolean condition() {
      // Define the condition logic
      return true;
   }
}

輸出

Executing Code Section 1
Executing Code Section 2

說明

我們將條件推理加入到condition() 的技術規格中。如果可能,請變更條件()的策略群組。

方法4異常處理

Java 中的例外處理或具有已檢查、未檢查和錯誤的 Java 異常,以及 try、catch、 throw、 throws 和 finally 關鍵字的範例和用法。

範例

public class GotoExample {
   public static void main(String[] args) {
      try {
         section1();
         if (condition()) {
            section2();
            if (anotherCondition()) {
               section3();
               throw new GotoException();
            } else {
               section4();
               if (yetAnotherCondition()) {
                  section5();
                  if (finalCondition()) {
                     section6();
                     throw new GotoException();
                  }
               }
            }
         }
         section7();
      } catch (GotoException e) {
         // Handle the exception to continue execution
         // or perform any necessary operations
      }
   }

   private static void section1() {
      System.out.println("Executing Code Section 1");
      // Code section 1
   }

   private static void section2() {
      System.out.println("Executing Code Section 2");
      // Code section 2
   }

   private static void section3() {
      System.out.println("Executing Code Section 3");
      // Code section 3
   }

   private static void section4() {
      System.out.println("Executing Code Section 4");
      // Code section 4
   }

   private static void section5() {
      System.out.println("Executing Code Section 5");
      // Code section 5
   }

   private static void section6() {
      System.out.println("Executing Code Section 6");
      // Code section 6
   }

   private static void section7() {
      System.out.println("Executing Code Section 7");
      // Code section 7
   }

   private static boolean condition() {
      // Define the condition logic
      return true;
   }

   private static boolean anotherCondition() {
      // Define the anotherCondition logic
      return true;
   }

   private static boolean yetAnotherCondition() {
      // Define the yetAnotherCondition logic
      return true;
   }

   private static boolean finalCondition() {
      // Define the finalCondition logic
      return true;
   }
}

class GotoException extends Exception {
   // Custom exception class to simulate the "goto" behavior
}

輸出

Executing Code Section 1
Executing Code Section 2
Executing Code Section 3

說明

方法 4 複製 goto 宣告來處理例外狀況。為了「跳」到程式碼,我們發出 GotoException。嘗試使用 GotoException 控制執行。

結論

即使沒有 goto 表達,Java 的有序控制流方法也能運作。標記、有限的關節、狀態機和有序程式設計範例可協助工程師編寫無錯誤、有效率的程式碼。要創建值得信賴、易於理解的 Java 程序,您必須接受這些可能性並遵循最佳實踐。

以上是Java支援Goto嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除