Problème variable int ( duplication )
Zeptron
-
Zeptron Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Zeptron Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonsoir. Alors voilà là où ça coince :
Le problème vient de la variable crf ( c'est un int ), il m'annonce que j'ai fait une duplication de la variable. Je comprend tout à fait cela, mais du coup je ne peux pas faire ce que je veux ( je veux pouvoir avoir une variable qui varie selon si le programme est passé par le if ou selon si le programme est passé par le else if ).
Si vous pourriez m'aider, ce serait sympa ( j'espère avoir été clair à propos de mon problème )
Merci d'avance.
int vir = 30; int qmr = 101; int h = d.nextInt(qmr-vir) + vir; int zcm = crf + h; System.out.println("Tour du sbire"); System.out.println(); if (sza == r) { System.out.println("COUP CRITIQUE"); System.out.println("Vous vous prenez deux fois les dégâts que vous deviez vous prendre"); System.out.println("Le sbire attaque et vous enlève de la vie : " + ez); System.out.println(); System.out.println("Votre vie passe à : " + spm); int crf = spm; } else if (sza < r) { System.out.println("Le sbire attaque et vous enlève de la vie : " + p); System.out.println(); System.out.println("Votre vie passe à : " + xsz); int crf = xsz; } System.out.println(); System.out.println("Votre tour"); System.out.println("Attaque, soin ou fuite"); System.out.println("Appuyez sur 1 pour attaque, 2 pour soin ou 3 pour fuite"); System.out.println(); int v = sl.nextInt(); switch (v) { case 1: System.out.println("Vous avez choisi : attaque"); System.out.println("Le sbire se reçoit des dégâts de : " + b); System.out.println("Le sbire a maintenant une vie de : " + erf); break; case 2: System.out.println("Vous avez choisi : soin"); System.out.println("Votre soin vous récupère une vie de : " + h); System.out.println("Votre vie passe maintenant à : " + zcm); break; case 3: System.out.println("Vous ne pouvez pas fuir"); System.out.println("Merci pour le tour gratuit à l'adversaire :)"); break;
Le problème vient de la variable crf ( c'est un int ), il m'annonce que j'ai fait une duplication de la variable. Je comprend tout à fait cela, mais du coup je ne peux pas faire ce que je veux ( je veux pouvoir avoir une variable qui varie selon si le programme est passé par le if ou selon si le programme est passé par le else if ).
Si vous pourriez m'aider, ce serait sympa ( j'espère avoir été clair à propos de mon problème )
Merci d'avance.
A voir également:
- Problème variable int ( duplication )
- Duplication écran - Guide
- Int converter - Télécharger - Bureautique
- Vba range avec variable ✓ - Forum VB / VBA
- Range avec une Variable ✓ - Forum VB / VBA
- Variable d'environnement temp ✓ - Forum Microsoft Office
2 réponses
Bonjour,
Très simple : tu déclares crf avant le premier if. De toute façon tu en as besoin ligne 4 dans zcm = crf + h;
Très simple : tu déclares crf avant le premier if. De toute façon tu en as besoin ligne 4 dans zcm = crf + h;
Justement, en faisant cette manip, ils me mettent : "Duplicate local variable crf ", du coup je ne peux pas lancer le programme et je ne sais pas comment faire pour résoudre ce problème :(
"mettre le soin à la personne et calculer le nombre de points de vie qu'il a à la fin du tour"
Pour l'instant moi j'ai des vir, qmr, zcm, crf... ça ne me parle pas du tout !
Un conseil, donnes des noms très explicites à tes variables, en Java tu n'as (quasiment) pas de limitation en taille, alors il faut en profiter.
Si je prends ne serait-ce que les 4 premières lignes (mais je doute que ce soit vraiment les premières), que vaut crf ligne 4 ? Où est-il déclaré ? S'il est déjà déclaré, pourquoi le déclarer à nouveau plus loin dans ton code ?
Pour l'instant moi j'ai des vir, qmr, zcm, crf... ça ne me parle pas du tout !
Un conseil, donnes des noms très explicites à tes variables, en Java tu n'as (quasiment) pas de limitation en taille, alors il faut en profiter.
Si je prends ne serait-ce que les 4 premières lignes (mais je doute que ce soit vraiment les premières), que vaut crf ligne 4 ? Où est-il déclaré ? S'il est déjà déclaré, pourquoi le déclarer à nouveau plus loin dans ton code ?
int vir = 30; int qmr = 101; int h = d.nextInt(qmr-vir) + vir; int zcm = crf + h;
J'ai remis à jour mon programme :
Ce que je veux c'est faire varier crf selon si le personnage que je joue s'est pris un coup critique ou pas ( crf aurait soit la valeur de la vie du personnage qui s'est pris des dmg normaux, ou soit la vie du personnage qui s'est pris un coup critique )
int attaquesbiremin = 30; int attaquesbiremax = 65; int attaquesbire = d.nextInt(attaquesbiremax - attaquesbiremin) + attaquesbiremin; int g = 2; int dmgcoupcritique = g * attaquesbire; int coupcritique = 1; int lowc = 1; int highc = 11; int proba = d.nextInt(highc - lowc) + lowc; int attaquemin = 1; int attaquemax = 4; int tonattaque = d.nextInt(attaquemax - attaquemin) + attaquemin; int viesanscc = t - attaquesbire; int vieaveccc = t - dmgcoupcritique; // t est la variable qui indique ta vie au début du combat // viedebut est la variable qui indique la vie du sbire au début int viesbire = viedebut - tonattaque; int soinmin = 30; int soinmax = 101; int soin = d.nextInt(soinmax - soinmin) + soinmin; int crf; int vieaprèssoin = crf + soin; System.out.println("Tour du sbire"); System.out.println(); if (coupcritique == proba) { System.out.println("COUP CRITIQUE"); System.out.println("Vous vous prenez deux fois les dégâts que vous deviez vous prendre"); System.out.println("Le sbire attaque et vous enlève de la vie : " + dmgcoupcritique); System.out.println(); System.out.println("Votre vie passe à : " + vieaveccc); int crf = vieaveccc; } else if (coupcritique < proba) { System.out.println("Le sbire attaque et vous enlève de la vie : " + attaquesbire); System.out.println(); System.out.println("Votre vie passe à : " + viesanscc); int crf = viesanscc; } System.out.println(); System.out.println("Votre tour"); System.out.println("Attaque, soin ou fuite"); System.out.println("Appuyez sur 1 pour attaque, 2 pour soin ou 3 pour fuite"); System.out.println(); int choixtontour = sl.nextInt(); switch (choixtontour) { case 1 : System.out.println("Vous avez choisi : attaque"); System.out.println("Le sbire se reçoit des dégâts de : " + tonattaque); System.out.println("Le sbire a maintenant une vie de : " + viesbire); break; case 2 : System.out.println("Vous avez choisi : soin"); System.out.println("Votre soin vous récupère une vie de : " + soin); System.out.println("Votre vie passe maintenant à : " + vieaprèssoin); break; case 3 : System.out.println("Vous ne pouvez pas fuir"); System.out.println("Merci pour le tour gratuit à l'adversaire :)"); break; }
Ce que je veux c'est faire varier crf selon si le personnage que je joue s'est pris un coup critique ou pas ( crf aurait soit la valeur de la vie du personnage qui s'est pris des dmg normaux, ou soit la vie du personnage qui s'est pris un coup critique )