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

Résolu
cs_JeanMi66 Messages postés 67 Date d'inscription samedi 10 septembre 2005 Statut Membre Dernière intervention 8 juillet 2008 - 25 juin 2007 à 09:34
cs_JeanMi66 Messages postés 67 Date d'inscription samedi 10 septembre 2005 Statut Membre Dernière intervention 8 juillet 2008 - 26 juin 2007 à 21:40
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

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
26 juin 2007 à 11:34
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 !
3
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
26 juin 2007 à 13:08
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
3
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
25 juin 2007 à 09:57
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
0
cs_JeanMi66 Messages postés 67 Date d'inscription samedi 10 septembre 2005 Statut Membre Dernière intervention 8 juillet 2008
25 juin 2007 à 10:56
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
25 juin 2007 à 11:05
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
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
25 juin 2007 à 11:29
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.
0
cs_JeanMi66 Messages postés 67 Date d'inscription samedi 10 septembre 2005 Statut Membre Dernière intervention 8 juillet 2008
26 juin 2007 à 11:19
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
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
26 juin 2007 à 11:24
Il te fait quoi au juste ? Message d'erreur ou c'est juste la variable user qui n'est pas modifiée ?
0
cs_JeanMi66 Messages postés 67 Date d'inscription samedi 10 septembre 2005 Statut Membre Dernière intervention 8 juillet 2008
26 juin 2007 à 11:29
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
0
cs_JeanMi66 Messages postés 67 Date d'inscription samedi 10 septembre 2005 Statut Membre Dernière intervention 8 juillet 2008
26 juin 2007 à 21:40
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
0