Partage
  • Partager sur Facebook
  • Partager sur Twitter

TP conversion boucle do while

Sujet résolu
    13 octobre 2018 à 21:19:10

    Salut,

    J'ai presque fini le TP.

    Mais je bloque à la dernière étape qui est "souhaitez vous continuer ? o/n" ?

    Car java ne veut pas comparer les string y a t-il une autre alternative ?

    package tpconversion;
    
    import java.util.Scanner;
    
    
    public class TpConversion {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String reponse;
    
            System.out.println("Choissiez le mode de conversion : ");
            System.out.println("1 - Convertisseur Celsius - Fahrenheit");
            System.out.println("2 - Convertisseur Fahrenheit - Celsius");
            int i = sc.nextInt();
    
            if (i == 1) {
                System.out.println("Température à convertir : ");
                float convers = sc.nextFloat();
                float conversionf = 9 / 5 * convers + 32;
                System.out.println(convers + "°C Correspond à : " + "" + conversionf + "°F");
    
            } else if (i == 2) {
                System.out.println("Température à converture ");
                float convers = sc.nextFloat();
                float conversionc = ((convers - 32) * 5 / 9);
                System.out.println(convers + "°F Correspond à : " + "" + conversionc + "°C");
    
            }
    
            do {
                System.out.println("Souhaitez-vous continuer ? o/n ");
                //affecter le resultat à la variable reponse
                reponse = sc.next();
            } while (reponse != "o" && reponse == "n"){ 
                        System.out.println("Au revoir...");
                    }
    
        }
    }
    
    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2018 à 21:57:24

      bonjour,

      Les comparaison de chaîne ne s'effectue pas de cette manière, essai plutôt quelques chose comme :

      reponse.equals("o")

      Par contre, tes tests me semblent bizarrement agencés. je m'explique : 

      tu va boucler dans ton do .. while.

      La seule possibilité de sortir de ton while est d'écrire "n" (tu dis de boucler tant que la réponse n'est pas "o", et est "n" ce qui est inutile puisque si la réponse est "n" alors elle sera forcément pas "o", et si elle est "o" elle sera forcément pas "n" donc les conditions ne seront pas vérifiées).

      Par ailleurs, le début de ta boucle est à "souhaitez vous continuer?" donc si je tape "o" le programme va de nouveau me demander si je veux continuer, alors que je pense que l'objectif est de relancer le programme depuis le début, le début du do est donc peut être mal placé.

      J'espère t'avoir éclairer et n'hésite pas à poser des questions si tu en as.

      • Partager sur Facebook
      • Partager sur Twitter
        13 octobre 2018 à 22:57:24

        Merci.

        J'ai changé par ça

                    System.out.println("Souhaitez-vous continuer ? o/n ");
                    //affecter le resultat à la variable reponse
                                reponse = sc.next();
        
                    if (!reponse.equals("o")) {
                        return;
                    }

        Mais quand je tape "o" ça ne relance pas le programme:)

        • Partager sur Facebook
        • Partager sur Twitter
          14 octobre 2018 à 10:05:53

          Peux-tu poster le code complet ?

          J'imagine que ta boucle "do" ne démarre pas au bon endroit

          • Partager sur Facebook
          • Partager sur Twitter
            14 octobre 2018 à 10:34:05

            J'ai simplement enlever la boucle do...while puisque je pense qu'elle n'est pas adapté à ce problème.

            Voici le code

            package tpconversion;
            
            import java.util.Scanner;
            
            
            public class TpConversion {
            
                public static void main(String[] args) {
                    Scanner sc = new Scanner(System.in);
                    String reponse = null;
            
                    System.out.println("Choissiez le mode de conversion : ");
                    System.out.println("1 - Convertisseur Celsius - Fahrenheit");
                    System.out.println("2 - Convertisseur Fahrenheit - Celsius");
                    int i = sc.nextInt();
            
                    if (i == 1) {
                        System.out.println("Température à convertir : ");
                        float convers = sc.nextFloat();
                        float conversionf = 9 / 5 * convers + 32;
                        System.out.println(convers + "°C Correspond à : " + "" + conversionf + "°F");
            
                    } else if (i == 2) {
                        System.out.println("Température à converture ");
                        float convers = sc.nextFloat();
                        float conversionc = ((convers - 32) * 5 / 9);
                        System.out.println(convers + "°F Correspond à : " + "" + conversionc + "°C");
            
                    }
            
                        System.out.println("Souhaitez-vous continuer ? o/n ");
                        //affecter le resultat à la variable reponse
                                    reponse = sc.next();
            
                        if (!reponse.equals("o")) {
                            return;
                        }
            
            
            
            
                }
            }



            -
            Edité par ZeldaQuatre 14 octobre 2018 à 10:38:42

            • Partager sur Facebook
            • Partager sur Twitter
              14 octobre 2018 à 11:24:43

              Ok, donc sans boucle il est normal que le programme ne recommence pas.

              Voici une proposition de solution :

              Scanner sc = new Scanner(System.in);
                      String reponse;
                      boolean finish=false; //ajoute d'une variable booleen qui va nous servir à relancer ou non le programme
                      
                      while(!finish){
                          reponse="";
                          System.out.println("Choissiez le mode de conversion : ");
                          System.out.println("1 - Convertisseur Celsius - Fahrenheit");
                          System.out.println("2 - Convertisseur Fahrenheit - Celsius");
                          int i = sc.nextInt();
               
                      if (i == 1) {
                          System.out.println("Température à convertir : ");
                          float convers = sc.nextFloat();
                          float conversionf = 9 / 5 * convers + 32;
                          System.out.println(convers + "°C Correspond à : " + "" + conversionf + "°F");
               
                      } else if (i == 2) {
                          System.out.println("Température à converture ");
                          float convers = sc.nextFloat();
                          float conversionc = ((convers - 32) * 5 / 9);
                          System.out.println(convers + "°F Correspond à : " + "" + conversionc + "°C");
               
                      }
                          
                          while(!reponse.equals("o") && !reponse.equals("n")){ //cette boucle sert juste à vérifier si la saisie est celle attendu
                              System.out.println("Souhaitez-vous continuer ? o/n ");
                              //affecter le resultat à la variable reponse
                              reponse = sc.next();
               
                              if (reponse.equals("n")) {
                                  finish=true; //cette condition va permettre de sortir du programme, dazns le cas contgrazire on recommence au début
                              }
                          }
                          
                      
                      }

              N'hésite pas à poser des questions :)

              • Partager sur Facebook
              • Partager sur Twitter
                14 octobre 2018 à 12:37:15

                Super ça fonctionne !:)

                Je ne savais qu'il fallait mettre une boucle while depuis le début:D

                Par contre je ne sais pas pourquoi il faut mettre " reponse="";" à la ligne 6

                • Partager sur Facebook
                • Partager sur Twitter
                  14 octobre 2018 à 19:49:25

                  Edit :

                  le réponse = "" est importante afin de réinitialiser la variable réponse à chaque boucle, sinon la variable réponse aura toujours la valeur "o", et donc quand tu arriveras à la portion :

                   while(!reponse.equals("o") && !reponse.equals("n"))

                  reponse sera déjà égale à "o" donc on ne rentrara jamais dans le while.

                  -
                  Edité par axldenied 14 octobre 2018 à 19:51:10

                  • Partager sur Facebook
                  • Partager sur Twitter

                  TP conversion boucle do while

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown