Erreur unreachable statement Java's cool

Résolu/Fermé
Pit - Modifié par KX le 23/01/2016 à 13:15
 Pit - 23 janv. 2016 à 19:33
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

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
23 janv. 2016 à 13:21
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...
0
Merci beaucoup pour votre reponce rapide j'ai contourné le probleme
0