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 :
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
-
ModérateurBonjour,
Quand tu faisreturn true;
le résultat est directement renvoyée et tu quitte la méthode. Les lignes suivantes sont donc ignorées, doncReturnOk = true;
est une partie du code qui ne sera jamais atteinte, d'où l'erreur "unreachable".
Dans ton cas tu peux supprimer tout tesReturnOk
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éthodeequals
.
De plus, si tu ne changes jamais les valeur de X ou Choix dans ta boucle while celle-ci va tourner indéfiniment... -
Merci beaucoup pour votre reponce rapide j'ai contourné le probleme