Erreur unreachable statement Java's cool

Résolu
Bonjour, j'ai un problème sur java's cool, j'aimerais faire un menu qui me permet de faire plusieurs choix mais sans rallonger le code, j'ai une erreur lors de la compilation à la ligne 7 ( en fair cette erreur est active pour la ligne 7 11 15 19 car l'erreur vient de la ligne ReturnOk = true; ) j'arrive la plupart du temps a regler l'erreur unreachable statement mais cette fois impossible.

voici mon code (il n'est pas finit il manque d'autres boucles while)
je vous remercie d'avance :

 
boolean Menu(int X, String Choix) {
   boolean ReturnOk = false;
   while (ReturnOk == false) {
      if (X ==1 && Choix == "Combat") {
         return  true;
         ReturnOk = true;
      }
      if (X ==2 && Choix == "Stats") {
         return  true;
         ReturnOk = true;
      }
      if (X ==3 && Choix == "Auberge") {
         return  true;
         ReturnOk = true;
      }
      if (X ==4 && Choix == "Quitter") {
         return  true;
         ReturnOk = true;
      }
   }
   return  false;
}

int CalculXp(int X) {
   int Xp =0;
   if (X == 0 || X == 1) {
      Xp = Xp +10;
   }
   if (X == 2 || X == 3) {
      Xp = Xp +15;
   }
   if (X == 4) {
      Xp = Xp +25;
   }
   return Xp;
}

int Combat(int Vj, int Aj, int Ij, String LevelE) {
   int Vm =0,Am =0,Im =0,AJ =0,AM =0;
   if (LevelE == "Gobelin" || LevelE == "Squelette") {
      Vm = 2;
      Am = 3;
      Im = 1;
   }
   if (LevelE == "Roi Squelette" || LevelE == "Capitaine Gobelin") {
      Vm = 4;
      Am =4;
      Im = 5;
   }
   if (LevelE == "Dragon") {
      Vm = 8;
      Am = 5;
      Im = 7;
   }
   while (Vj > 0 && Vm > 0) {
      println("");
      AM = random(0, Am);
      AJ = random(0, Aj);
      println("");
      if (Im >= Ij) {
         Vj = Vj - AM;
         println("Tu subit " + AM + " dégats!");
         Vm = Vm - AJ;
         println("Tu inflige au " + LevelE+" " + AJ + " dégats!");
      } else {
         Vm = Vm - AJ;
         println("Tu inflige au " + LevelE+" " + AJ + " dégats!");
         Vj = Vj - AM;
         println("Tu subit " + AM + " dégats!");
      }
   }
   return Vj;
}

void main() {
   int Vita =10;
   int Att = 7;
   //initiative
    int Ini = 5;
   int Xp = 0;
   int LevelUp = 0;
   int Level =1;
   String Nom = "";
   //Multitache
    int X;
   String MenuAide [] = new String [4];
   MenuAide [0] = "Combat";
   MenuAide [1] = "Stats";
   MenuAide [2] = "Auberge";
   MenuAide [3] = "Quitter";
   String Enemies [] = new String [5];
   Enemies [0] = "Gobelin";
   Enemies [1] = "Squelette";
   Enemies [2] = "Capitaine Gobelin";
   Enemies [3] = "Roi Squelette";
   Enemies [4] = "Dragon";
   boolean Jeux = false;
   boolean Combat = false;
   boolean Stats = false;
   boolean Auberge = false;
   Nom = readString("Bonjour ! Quel est ton nom?");
   println("Tu est tombé sur la tête " + Nom + " on dirais que tu a tout oublié, ");
   println("quand tu te reveille tu te rend compte que ");
   println("tu est dans Thanyr la ville au centre du monde !");
   Jeux = readBoolean(Nom + " oublie pas ! Tu est un aventurier en quête d'aventure, est tu prêt?");
   while (Jeux == true) {
      println("");
      println("1- Combatre");
      println("2- Stats");
      println("3- Auberge");
      println("4- Quitter");
      X = readInt("Que veut tu faire? 1)Combatre// 2)Stats// 3)Auberge// 4)Quitter");
      Combat = Menu(X, MenuAide[X]);
      Stats = Menu(X, MenuAide[X]);
      Auberge = Menu(X, MenuAide[X]);
      Jeux = Menu(X, MenuAide[X]);
      while (Combat == true) {
         X = random(0, 5);
         println("Tu rencontre un " + Enemies [X]);
         Vita = Combat(Vita, Att, Ini, Enemies [X]);
         println("");
         println("Tu a " + Vita);
         Xp = CalculXp(X);
         Combat = readBoolean("Tu veut continuer? Tu a " + Vita + " de vie et " + Xp + " xp sur " + LevelUp);
      }
   }
}



2 réponses

  1. Modérateur
    Bonjour,

    Quand tu fais
    return  true;
    le résultat est directement renvoyée et tu quitte la méthode. Les lignes suivantes sont donc ignorées, donc
    ReturnOk = true;
    est une partie du code qui ne sera jamais atteinte, d'où l'erreur "unreachable".

    Dans ton cas tu peux supprimer tout tes
    ReturnOk
    ils ne servent à rien.

    Attention : on ne doit pas comparer deux String avec
    ==
    (cela compare les objets pas leurs valeurs) il faut que tu utilises la méthode
    equals
    .
    De plus, si tu ne changes jamais les valeur de X ou Choix dans ta boucle while celle-ci va tourner indéfiniment...
    1. Merci beaucoup pour votre reponce rapide j'ai contourné le probleme