Problème avec une variable qui est testée

Résolu
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. Modérateur
    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));
    1. Cette parenthèse est une faute de frappe et j'ai essayé les deux solutions mais elles ne marchent pas. Une autre idée?
    2. Modérateur
      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);
          }
      }
    3. Merci ça marche!