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

cs_JeanMi66 67 Messages postés samedi 10 septembre 2005Date d'inscription 8 juillet 2008 Dernière intervention - 25 juin 2007 à 09:34 - Dernière réponse : cs_JeanMi66 67 Messages postés samedi 10 septembre 2005Date d'inscription 8 juillet 2008 Dernière intervention
- 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
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 26 juin 2007 à 11:34
3
Merci
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 !

Merci cs_DARKSIDIOUS 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_DARKSIDIOUS
Meilleure réponse
Twinuts 5292 Messages postés dimanche 4 mai 2003Date d'inscription 12 novembre 2018 Dernière intervention - 26 juin 2007 à 13:08
3
Merci
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

Merci Twinuts 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de Twinuts
Twinuts 5292 Messages postés dimanche 4 mai 2003Date d'inscription 12 novembre 2018 Dernière intervention - 25 juin 2007 à 09:57
0
Merci
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
Commenter la réponse de Twinuts
cs_JeanMi66 67 Messages postés samedi 10 septembre 2005Date d'inscription 8 juillet 2008 Dernière intervention - 25 juin 2007 à 10:56
0
Merci
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
Commenter la réponse de cs_JeanMi66
Twinuts 5292 Messages postés dimanche 4 mai 2003Date d'inscription 12 novembre 2018 Dernière intervention - 25 juin 2007 à 11:05
0
Merci
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
Commenter la réponse de Twinuts
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 25 juin 2007 à 11:29
0
Merci
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.
Commenter la réponse de cs_DARKSIDIOUS
cs_JeanMi66 67 Messages postés samedi 10 septembre 2005Date d'inscription 8 juillet 2008 Dernière intervention - 26 juin 2007 à 11:19
0
Merci
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
Commenter la réponse de cs_JeanMi66
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 26 juin 2007 à 11:24
0
Merci
Il te fait quoi au juste ? Message d'erreur ou c'est juste la variable user qui n'est pas modifiée ?
Commenter la réponse de cs_DARKSIDIOUS
cs_JeanMi66 67 Messages postés samedi 10 septembre 2005Date d'inscription 8 juillet 2008 Dernière intervention - 26 juin 2007 à 11:29
0
Merci
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
Commenter la réponse de cs_JeanMi66
cs_JeanMi66 67 Messages postés samedi 10 septembre 2005Date d'inscription 8 juillet 2008 Dernière intervention - 26 juin 2007 à 21:40
0
Merci
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
Commenter la réponse de cs_JeanMi66

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.