variable cannot be resolved

variable cannot be resolved - Java - Programmation

Marsh Posté le 26-03-2009 à 18:17:56    

Slt, je suis en train de me faire une calculette toute simple en java et normalement elle est finie sauf que j'ai 4 fois l'erreur "choix cannot be resolved" à la ligne 55 et la ligne 55 est mon while, je vous montre mon code:
 

Code :
  1. import java.util.Scanner;
  2. public class sdz1 {
  3. /**
  4.  * @param args
  5.  */
  6. public static void main(String[] args) {
  7.  // TODO Auto-generated method stub
  8. Scanner lire = new Scanner (System.in);
  9. do{
  10.    double premier;
  11.    double second;
  12.    int choix;
  13.    double res;
  14.    System.out.println("Saisissez un premier nombre" );
  15.    premier = lire.nextDouble();
  16.    System.out.println("Saisissez un deuxieme nombre" );
  17.    second = lire.nextDouble();
  18.    System.out.print("1 pour ajouter /n" +
  19.                 "2 pour soustraire /n" +
  20.                "3 pour multiplier /n" +
  21.                "4 pour diviser /n" +
  22.                "5 pour quitter" );
  23.                        
  24.    choix = lire.nextInt();
  25.    switch (choix){
  26.      
  27.       case '1':
  28.       res = (premier+second);
  29.       System.out.println("Le resultat est " + res);
  30.       break;
  31.      
  32.       case '2':
  33.       res = (premier-second);
  34.       System.out.println("Le resultat est " + res);
  35.       break;
  36.      
  37.       case '3':
  38.       res = (premier*second);
  39.       System.out.println("Le resultat est " + res);
  40.       break;
  41.      
  42.       case '4':
  43.       res = (premier/second);
  44.       System.out.println("Le resultat est " + res);
  45.       break;
  46.      
  47.       Default:
  48.        System.out.println("Erreur de programmation" );
  49.           }
  50.        }
  51. while ( (choix ==1) || (choix ==2) || (choix ==3) || (choix ==4) );
  52. }
  53. }


 
J'ai essayé en mettant choix =='1' mais ça ne change rien, j'ai peut-être mal pensé en programmant et je devrais changer quelques trucs?

Reply

Marsh Posté le 26-03-2009 à 18:17:56   

Reply

Marsh Posté le 26-03-2009 à 18:42:58    

choix est un int donc dans tes case, n'entoure pas les valeurs de single quote:
case 1:
...
case 2:
...
etc


Message édité par souk le 26-03-2009 à 18:43:11
Reply

Marsh Posté le 26-03-2009 à 18:47:45    

Je viens d'enlever les guillements et ça ne change rien..  :/

Reply

Marsh Posté le 26-03-2009 à 20:27:12    

choix est créé dans le do{}while, donc sa scope de définition est entre { et }, ce qui n'inclut pas la condition dans le while [:spamafote]

 

Donc au niveau de la dite condition, choix n'existe pas, d'où le message d'erreur.

 

Accessoirement, ce code est très moche, pourquoi répéter 4 fois de suite System.out.println("Le resultat est " + res);? Pourquoi mettre 4 cas à la condition finale alors que 2 suffisent? Pourquoi forcer l'utilisateur à se chopper un message "erreur de programmation" quand il veut quitter? Pourquoi ne pas dire à l'utilisateur comment quitter, d'ailleurs? Et pourquoi toutes ces parenthèses sans intérêt à travers le code?


Message édité par masklinn le 26-03-2009 à 20:33:27

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box, and replicate and expand beyond their wildest dreams by throwing away the limits imposed by overbearing genetic r
Reply

Marsh Posté le 26-03-2009 à 20:34:52    

Je viens de refaire mon programme et voici mon code final:
 

Code :
  1. import java.util.Scanner;
  2. public class sdz1 {
  3. /**
  4.  * @param args
  5.  */
  6. public static void main(String[] args) {
  7.  // TODO Auto-generated method stub
  8. Scanner lire = new Scanner (System.in);
  9. int choix;
  10. do{
  11.    double premier;
  12.    double second;
  13.    double res;
  14.    System.out.println("Saisissez un premier nombre" );
  15.    premier = lire.nextDouble();
  16.    System.out.println("Saisissez un deuxieme nombre" );
  17.    second = lire.nextDouble();
  18.    System.out.println("1 pour ajouter, 2 pour soustraire, 3 pour multiplier, 4 pour diviser ou 5 pour quitter" );
  19.                        
  20.    choix = lire.nextInt();
  21.    switch (choix){
  22.      
  23.       case 1:
  24.       res = (premier+second);
  25.       System.out.println("Le resultat est " + res);
  26.       break;
  27.      
  28.       case 2:
  29.       res = (premier-second);
  30.       System.out.println("Le resultat est " + res);
  31.       break;
  32.      
  33.       case 3:
  34.       res = (premier*second);
  35.       System.out.println("Le resultat est " + res);
  36.       break;
  37.      
  38.       case 4:
  39.       res = (premier/second);
  40.       System.out.println("Le resultat est " + res);
  41.       break;
  42.           }
  43.        }
  44. while ( (choix ==1) || (choix ==2) || (choix ==3) || (choix ==4) );
  45. }
  46. }


 
Maintenant je vais l'améliorer de façon à ce que l'utilisateur puisse choisiri autant de nombre qu'il veut parce que là il ne peut agir qu'avec deux nombres seulement..

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed