Problème avec une variable qui est testée

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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
    1. Utilisateur anonyme
       
      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
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      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
    3. Utilisateur anonyme
       
      Merci ça marche!
      0