Maison  >  Article  >  Java  >  Java prend-il en charge Goto ?

Java prend-il en charge Goto ?

王林
王林avant
2023-09-05 23:33:071009parcourir

Java prend-il en charge Goto ?

Java est connu pour sa cohérence et sa polyvalence. Java fournit plusieurs méthodes principales de contrôle du flux. Les constructions étymologiques de Java manquent de spécifications de flux de contrôle, comme le montre l'instruction « goto ». Dans cette partie, nous apprendrons pourquoi Java ne dispose pas de fonction goto, certaines de ses options et comment les utiliser pour atteindre des objectifs similaires.

Grammaire

Tout d’abord, jetons un coup d’œil à la structure du langage Java. L'interprétation goto vous permet d'échanger librement des sections de code en fonction de leurs noms. Goto génère un flux de contrôle complexe en C et C++, mais le code est souvent illisible et sans valeur.

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
}

Explication de la grammaire

Les auteurs de Java ont omis l'expression goto car cela rendrait le code encombré et difficile à comprendre. Ils privilégient un flux de contrôle structuré pour un code plus propre et moins de bugs.

Algorithme

Algorithme étape par étape pour gérer le flux de contrôle en Java -

  • Point d'entrée- L'exécution du programme commencera à partir du point d'entrée sélectionné, qui peut être la méthode principale ou un autre point d'entrée.

  • Exécution séquentielle - Le code s'exécute ligne par ligne de manière continue à moins qu'une interprétation du flux de contrôle ne soit rencontrée, auquel cas l'exécution passe à la routine d'assertion suivante.

  • Instructions pour créer des boucles Les instructions de boucle (y compris les instructions for, while et do-while) permettent de répéter des blocs de code jusqu'à ce qu'une condition spécifique soit remplie.

Méthode

Même si Java n'avait pas besoin d'y accéder, les développeurs ont trouvé des moyens de créer des fonctionnalités similaires.

Méthode 1 : étiquettes et instructions conditionnelles

Instructions

Les balises peuvent marquer des segments de code et les expressions conditionnelles peuvent contrôler l'exécution en fonction de conditions. Goto manque de contrôle et de lisibilité.

Exemple

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;
}

Sortie

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

Instructions

Pour démontrer l'exécution, nous insérons des instructions System.out.println() dans chaque section de code. Cela vous permet de suivre l'exécution et de voir ce qui se passe en fonction de la situation. Control Center affiche les messages d'exécution de code.

Méthode 2 Utiliser la méthode pour encapsuler

Construisez le flux de contrôle Java en encapsulant le code dans des méthodes. Les appels de méthode nous permettent de naviguer dans le logiciel en le décomposant en parties gérables.

Exemple

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;
   }
}

Sortie

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

Instructions

J'ai ajouté les méthodes section3(), section4(), section5(), section6() et section7(). Condition, anotherCondition, yetAnotherCondition et FinalCondition sont remplacés par leurs procédures. Ces méthodes vous conviennent.

Méthode 3 Machine à états

State machine gère un flux de contrôle complexe. Les machines à états représentent mathématiquement les transitions. Les machines à états organisent le flux de contrôle.

Exemple

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;
   }
}

Sortie

Executing Code Section 1
Executing Code Section 2

Instructions

Nous avons ajouté un raisonnement conditionnel à la spécification technique de condition(). Si possible, modifiez le groupe de stratégies pour condition().

Méthode 4 de gestion des exceptions

Gestion des exceptions en Java ou des exceptions Java avec coché, non coché et erreurs avec des exemples et l'utilisation de mots-clés try, catch, throw, throws et enfin.

Exemple

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
}

Sortie

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

Instructions

Méthode 4 Copiez l'instruction goto pour gérer les exceptions. Pour "passer" au code, nous émettons une GotoException. Essayez d'utiliser GotoException pour contrôler l'exécution.

Conclusion

L'approche de flux de contrôle ordonné de Java fonctionne même sans expressions goto. Les notations, les articulations finies, les machines à états et les paradigmes de programmation séquentielle aident les ingénieurs à écrire du code efficace et sans erreur. Pour créer des programmes Java fiables et faciles à comprendre, vous devez accepter ces possibilités et suivre les meilleures pratiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer