Problème variable int ( duplication )
Fermé
Zeptron
-
Modifié par KX le 20/11/2014 à 22:33
Zeptron Messages postés 4 Date d'inscription vendredi 21 novembre 2014 Statut Membre Dernière intervention 22 novembre 2014 - 22 nov. 2014 à 12:55
Zeptron Messages postés 4 Date d'inscription vendredi 21 novembre 2014 Statut Membre Dernière intervention 22 novembre 2014 - 22 nov. 2014 à 12:55
A voir également:
- Problème variable int ( duplication )
- Duplication écran - Guide
- Int converter - Télécharger - Bureautique
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Windows 10
2 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
20 nov. 2014 à 22:35
20 nov. 2014 à 22:35
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;
Zeptron
Messages postés
4
Date d'inscription
vendredi 21 novembre 2014
Statut
Membre
Dernière intervention
22 novembre 2014
21 nov. 2014 à 23:12
21 nov. 2014 à 23:12
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 :(
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
21 nov. 2014 à 23:31
21 nov. 2014 à 23:31
Il faudrait voir ton code complet, avec quelques explications de ce que tu cherches à faire, mais dans tout les cas tu ne peux pas déclarer plusieurs fois le même nom de variable dans le même scope...
Zeptron
Messages postés
4
Date d'inscription
vendredi 21 novembre 2014
Statut
Membre
Dernière intervention
22 novembre 2014
21 nov. 2014 à 23:39
21 nov. 2014 à 23:39
Ce que je voudrais faire, c'est mettre le soin à la personne et calculer le nombre de points de vie qu'il a à la fin du tour. Cependant sa vie peut varier selon s'il a pris un coup critique ou pas. Et c'est cette partie que je n'arrive pas à résoudre.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
21 nov. 2014 à 23:47
21 nov. 2014 à 23:47
"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;
Zeptron
Messages postés
4
Date d'inscription
vendredi 21 novembre 2014
Statut
Membre
Dernière intervention
22 novembre 2014
Modifié par KX le 22/11/2014 à 12:05
Modifié par KX le 22/11/2014 à 12:05
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 )
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
22 nov. 2014 à 12:08
22 nov. 2014 à 12:08
Dans la mesure où tu as déjà
Attention : tu ne peux pas faire
int crfligne 26, tu ne dois pas déclarer à nouveau
int crflignes 39 et 46, il faut juste que tu mettes
crf = vieavecccou
crf = viesanscc;.
Attention : tu ne peux pas faire
vieaprèssoin = crf + soinligne 27 alors que crf n'a pas encore de valeur.