Problème avec une variable qui est testée

Résolu/Fermé
Utilisateur anonyme - Modifié par paragoumba le 9/08/2014 à 16:45
 Utilisateur anonyme - 9 août 2014 à 18:57
Bonjour!
J'ai un problème avec mon code qui permet de convertir les F en C et inversement.

import java.util.*;

public class Conversion {

 private static Scanner sc;

 public static void main(String[] args) {
  
 do
   { 
  sc = new Scanner(System.in);
  System.out.println("Choisissez le mode de conversion :");
  System.out.println("1 - Celsius (°C) ---> Fahrenheit (°F).");
  System.out.println("2 - Fahrenheit (°F) --> Celsius (°C).");
  int reponse = sc.nextInt();
  
  switch (reponse)
        {
          case 1: //Si reponse = 1  alors faire de a à b
         double faren; //a
         System.out.println("Entrez les C° que vous voulez convertir.");
            double celsius = sc.nextInt();
         faren = celsius * 9 / 5 + 32;
         System.out.print(""+celsius);
         System.out.print("C° fait "+faren);
         System.out.print(" F°.");
            break; //b
          case 2: //Si reponse = 2 alors faire de 1 à 2
         double celsius1; //1
         System.out.println("Entrez les F° que vous voulez convertir.");
         double faren1 = sc.nextInt();
         celsius1 = (faren1 - 32) * 5 / 9;
         System.out.print(""+faren1);
     System.out.print("F° fait "+celsius1);
     System.out.print(" C°.");
     break; //2
          default:
           System.out.print("ERREUR : Vous n'avez pas entré une réponse correcte.");
        } 
   }while(<bold><underline>reponse</underline></bold> != 1 && <bold><underline>reponse</underline></bold> != 2);
   }

}

C'est la variable réponse qui a un problème, voici un screen de l'erreur :

Voici le message d'erreur que ça me met :
Multiple markers at this line
- reponse cannot be resolved to a variable
- reponse cannot be resolved to a variable

Merci de vos réponses ! :)

1 réponse

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
9 août 2014 à 16:36
Bonjour,

J'ai pas regardé le reste du code, mais
while(reponse != 1 && (reponse != 2);
a deux parenthèses ouvrantes et une seule parenthèse fermante, tu dois donc soit supprimer une parenthèse ouvrante soit rajouter une parenthèse fermante pour équilibrer le parenthesage.

Au choix :
while(reponse != 1 && reponse != 2);
while(reponse != 1 && (reponse != 2));
0
Utilisateur anonyme
9 août 2014 à 16:43
Cette parenthèse est une faute de frappe et j'ai essayé les deux solutions mais elles ne marchent pas. Une autre idée?
0
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
9 août 2014 à 18:30
Je viens de regarder plus en détails, le problème c'est que
reponse
est déclarée à l'intérieur du corps de la boucle, elle ne peut donc pas être utilisée dans la condition qui suit.

Tu devrais plutôt faire :

import java.util.Scanner;

public class Conversion {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int reponse;
        do {
            //...
            reponse = sc.nextInt();

            switch (reponse) {
               //...
            }
        } while (reponse != 1 && reponse != 2);
    }
}
0
Utilisateur anonyme
9 août 2014 à 18:57
Merci ça marche!
0