Récupérer variable d'un IF à l'autre

[Résolu]
Signaler
Messages postés
67
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2008
-
Messages postés
67
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2008
-
Bonjour,

je démarre en JAVA et j'ai un petit souci surement très bête: j'ai une variable String X dans un IF. Après ce premier bloc de conditions, j'ai un autre bloc IF et apparemment, ma variable X n'a de valeur que dans le premier bloc IF (si je l'appelle dans le second, elle n'est pas trouvée). Je crois avoir lu que ça s'appelle un "scope".

Donc suite à ce constat ma question est la suivante: comment dois-je faire pour la récupérer dans le second bloc IF (voire même après dans d'autres blocs plus loin, style des WHILE) ?

Merci d'avance.

JeanMi66

10 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
Ok, user est de type String, c'est bien cà ?

Donc c'est quoi cette fonction withDraw que tu lui applique ??? Elle n'existe pas dans la classe String en tout cas !
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

De plus tu ne peux pas redef la class String (elle est en final) donc je sais pas trop ou tu as sorti cette méthode.... peut-etre du code J++ ou du J# compilé avec le compilot de sun ?

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

faudrait que tu fasses un truc genre :

String str = ....

if(...)
    str = ....;
if(...)
    str = ....;

en gros faut que la variable soit visible depuis tous les blocs de codes ou elle est utilisée.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
67
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2008

Heuuu, en fait c'est ce que j'ai fait mais ça fonctionne pas. Comme le résultat est renvoyé dans le premier bloc IF, celui-ci reste dans ce bloc là. Alors comment faire pour l'en faire sortir ????

JeanMi66
Messages postés
5365
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
12 août 2021
111
Salut,

donnes ton code que l'on puisse voir ensemble ce qui cloche......

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
Tu n'aurais pas fait plutôt :

if (...) {
    String str = "...";
}

Ou encore :

while(...) {
    String str;
    if (..) {
       str = "...":
    }
}

if (...) {
    str = "...";
}

Il faut que la variable soit déclaré dans le bloc où tu l'utilise ou dans le bloc père tout simplement.
Messages postés
67
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2008

Voici mon bout de code qui se trouve dans le MAIN. Toute les variables fonctionnent, hormis user. Sachant que pour l'instant, user est déclaré avant le main comme private static String user; Comme
ça fonctionnait pas, j'ai essayé de le déclarer juste après le WHILE,
comme "valueUser", mais ça fonctionne pas non plus. Pourquoi ? Que
dois-je modifier ?


PS: je démarre en java, c'est ma sixième heure de cours seulement et
mon premier exo alors merci de votre indulgence sur le code. Pour
l'indentation, j'ai fait un copier/coller alors normal si c'est pas
top...


//Initialisation de l'état de la variable qui serira à sortir ou non du programme par choix de l'utilisateur

boolean fini = false;


while (fini == false){


  //On cherche à identifier qui est l'utilisateur: compte ou LAconfidential

  System.out.println("Bonjour. Etes-vous le titulaire principal du
compte (tapez 1) ou secondaire (tapez 2) ? (0 pour sortir)\n");

  double valueUser = Clavier.lireDouble();

 

  if(valueUser == 0){

  fini = true;

  }

  else{

    if(valueUser == 1){

    user = new String("compte"); ICI, PREMIER RESULTAT POSSIBLE POUR USER

    }

    else{

    user = new String("LAconfidential");  ICI, SECOND RESULTAT POSSIBLE POUR USER

    }


  System.out.println("Quelle operation voulez-vous effectuer: (0 pour sortir)\n");

  System.out.println(" 1- Effectuer un retrait\n 2- Effectuer un
depot\n 3- Effectuer un virement\n 4- Connaitre le titulaire du
compte\n 5- Modifier le nom du titulaire du compte\n\n
******************\n\n");

  int choice = Clavier.lireInt();

 

  if(choice == 0){

    fini = true;

  }

  else{


    switch(choice){

      //Opération permettant le débit du compte à condition que le
montant demandé soit disponible sur le compte, découvert non autorisé

      case 1:

        System.out.println("Quel montant voulez-vous retirer ? (0 pour sortir)\n");

        double amount1 = Clavier.lireDouble();

        if(amount1 == 0){

        fini = true;

        }

        else{

        if(amount1 <= solde){

        user.withDraw(amount1); VOILA, C'EST ICI QUE USER DEVRAIT  PRENDRE LA VALEUR DEFINI DANS LE BLOC IF PLUS HAUT

        System.out.println(" Vous venez de retirer: " +amount1+ "\n
Votre nouveau solde est a present de: " +user.balance()+ "\n\n");

        }

        else{

        System.out.println("***** Le montant demande est trop important. (0 pour sortir) ***** \n\n");

        if(amount1 == 0){

        fini = true;

        }}}

        break;

       

      //Opération permettant le crédit du compte

      case 2:...


Merci d'avance

JeanMi66
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
125
Il te fait quoi au juste ? Message d'erreur ou c'est juste la variable user qui n'est pas modifiée ?
Messages postés
67
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2008

Heuu, de mémoire c'est: cannot find symbol et ça point sur le "user" de "user.withDraw" Mais je pourrais donner le message d'erreur exact entre 14h et 14h30 cet ap s'il le faut

Merci

JeanMi66
Messages postés
67
Date d'inscription
samedi 10 septembre 2005
Statut
Membre
Dernière intervention
8 juillet 2008

Ok, j'ai compris mon erreur, je me rendais pas bien compte que je tentais d'accéder à un attribue de String, qui n'existe pas forcemment !

Merci encore !!!!

JeanMi66