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

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
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