Partage
  • Partager sur Facebook
  • Partager sur Twitter

Switch qui ne fonctionne pas

Sujet résolu
Anonyme
    1 mai 2010 à 23:48:37

    Bonsoir, j'essaye en vain de résoudre un problème mais je n'y parviens pas :

    Voici le code :

    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    
    package testswitch;
    import java.util.Scanner;
    
    /**
     *
     * @author theo
     */
    public class Main {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            // TODO code application logic here
            
            int choix = 0;
            
            System.out.println("1. Piloter un C-130");
            System.out.println("2. Piloter un C-160");
            System.out.println("3. Piloter un Robin DR-400");
            System.out.print("Choix :");
            
            Scanner sc = new Scanner(System.in);
            
            String ste = sc.nextLine();
            
            switch (choix)
                    {
                case 1 : System.out.print("Ouah du QUADRIMOTEUR !!");
                break;
                
                case 2 : System.out.print("Vive la BA 123");
                break;
                
                case 3 : System.out.print("Un bon avion de tourisme !");
                break;
                
                default : System.out.print("ERROR");
                break;
            }
            
        }
    
    }
    


    Et lorsque je rentre une valuer ça m'affiche toujours la valeur de "default" ici ERROR.

    Comment remédier à ce problème ? J'ai essayer de faire " int choix = 1;" mais dans ce cas la c'est le même probleme c'est toujours la valeur de case 1 qui est activée !
    • Partager sur Facebook
    • Partager sur Twitter
      1 mai 2010 à 23:54:30

      Tout simplement parce que tu ne modifies jamais la valeur de la variable choix lorsque t'utilises Scanner.
      int choix = (int) sc.nextLine();
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        2 mai 2010 à 12:58:32

        Merci de ta réponse je vais essayer.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          3 mai 2010 à 18:15:57

          ça ne fonctionne pas :
          /*
           * To change this template, choose Tools | Templates
           * and open the template in the editor.
           */
          
          package testswitch;
          import java.util.Scanner;
          
          /**
           *
           * @author theo
           */
          public class Main {
          
              /**
               * @param args the command line arguments
               */
              public static void main(String[] args) {
                  // TODO code application logic here
                         
                  Scanner sc = new Scanner(System.in);
                  
                  String ste = sc.nextLine(); 
                  
                  int choix = (int) sc.nextLine();
                  
                  System.out.println("1. Piloter un C-130");
                  System.out.println("2. Piloter un C-160");
                  System.out.println("3. Piloter un Robin DR-400");
                  System.out.print("Choix :");
                 
                  
                  switch (choix)
                          {
                      case 1 : System.out.print("Ouah du QUADRIMOTEUR !!");
                      break;
                      
                      case 2 : System.out.print("Vive la BA 123");
                      break;
                      
                      case 3 : System.out.print("Un bon avion de tourisme !");
                      break;
                      
                      default : System.out.print("ERROR");
                      break;
                  }
                  
              }
          
          }
          
          • Partager sur Facebook
          • Partager sur Twitter
            3 mai 2010 à 18:25:19

            Citation : zUser

            ça ne fonctionne pas :


            Qu'est-ce qui ne fonctionne pas ????????? Il serait bon de préciser !

            Bon ici ça se voit tout de suite mais bon.
            Comment veux-tu transformer une chaîne de caractère, donc une suite de mots en un nombre ? En faisant la somme des nombres associés à chaque lettre ? Nan ça serait inutile...

            Il existe une méthode qui vérifie que le "mot" rentré est bien un nombre et seulement dans ce cas là, renvoie le nombre comme il faut.
            Donc, vire ton cast (int)sc.nextLine(); et mets Integer.parseInt(sc.nextline()); .

            P.S. Je te conseille vivement d'abandonner NetBeans et de te mettre à la console pour les débuts, on apprend bien plus de choses comme ça.

            Bon courage :)
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              3 mai 2010 à 18:33:44

              ça marche pas non plus il me dit qu'il ne peut pas trouver le symbole ...
              int choix = Integer.parseInt(sc.nextline());
              



              • Partager sur Facebook
              • Partager sur Twitter
                3 mai 2010 à 20:30:19

                Je pensais que nextLine retourné un Object :-°
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  3 mai 2010 à 21:02:36

                  Comment je fais alors snif X 1000... ??
                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 mai 2010 à 22:57:42

                    Aucune idée mon gars :p
                    Integer fait partie de java.lang donc l'import est fait de base.
                    Enregistre ton projet et relance-le, ça doit marcher.
                    Ou alors t'as viré import java.util.Scanner; sans faire exprès ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      4 mai 2010 à 10:44:25

                      Je ne connais pas la classe Scanner (à mon grand regret vu ce qu'elle a l'air de faire)
                      mais à priori elle lit juste l'entrée et donne ce qu'elle contient quand on lui demande.

                      Donc pour moi tu demande le choix de l'utilisateur avant qu'il l'est fait déplace la ligne 25 en ligne 32
                      Ca devrait mieux marcher.

                      Il faut sans doute attendre que l'utilisateur ait fait son choix avec une boucle d'attente active sinon t'auras pas le temps de taper quoi que ce soit. (mais ça peut-être que Scanner le fait pour toi)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        4 mai 2010 à 11:25:29

                        zUser voici ton code corriger hihihi je l'ai essaye et il marche parfaitement

                        package testswitch;

                        import java.util.Scanner;

                        public class Main {

                        /**
                        * @param args
                        * the command line arguments
                        */
                        public static void main(String[] args) {
                        // TODO code application logic here

                        System.out.println("1. Piloter un C-130");
                        System.out.println("2. Piloter un C-160");
                        System.out.println("3. Piloter un Robin DR-400");
                        System.out.print("Choix :");

                        Scanner sc = new Scanner(System.in);

                        int ch = Integer.parseInt(sc.nextLine());

                        switch (ch) {
                        case 1:
                        System.out.print("Ouah du QUADRIMOTEUR !!");
                        break;

                        case 2:
                        System.out.print("Vive la BA 123");
                        break;

                        case 3:
                        System.out.print("Un bon avion de tourisme !");
                        break;

                        default:
                        System.out.print("ERROR");
                        break;
                        }

                        }

                        }
                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 mai 2010 à 16:01:33

                          ou plus simplement

                          int choix = sc.nextInt();
                          
                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 mai 2010 à 17:33:34

                            On l'as oubliée cette méthode. Bref, nous et la console :-° ...
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              4 mai 2010 à 19:38:44

                              Merci beaucoup a tous !!!!!! Ca marche !!!!
                              • Partager sur Facebook
                              • Partager sur Twitter

                              Switch qui ne fonctionne pas

                              × 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