Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec if / else

    20 avril 2015 à 21:00:53

    Salut, je suis ici pour trouver réponse à mon problème:

    Mon code ne marche malheureusement pas a cause de la commande if / else qui ne marche pas, voici mon code :

    import java.util.Scanner;


    public class Partie1{

        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub

    //Bla bla
            Scanner sc = new Scanner(System.in);
           
            System.out.println("CONVERTISSEUR DEGRES CELCIUS ET FAHRENHEIT");
           
            System.out.println("Taper 1 pour choisir Fahrenheit -> Celcius");
           
            System.out.println("Taper 2 pour choisir Celcius -> Fahrenheit");
           
            int choix = sc.nextInt();
           
    //Debut de l'algorythme
           
            char reponse = 'O';
           
            while (reponse == 0)
               
            if ( choix == 1);
           
                System.out.println("Tu as choisis: Fahrenheit → Celcius ;" +
                    " choisis la temperature a convertir");
           
                int valeur  = sc.nextInt();  //C'est le nombre de degres Fahrenheit choisi
           
                double resultat = (valeur - 32)/1.8; //Le resultat en Celcius
           
                System.out.println(valeur + " degres Fahrenheit valent " + resultat +
                    " degres Celcius" );
       
             else if( choix == 2);
       
                System.out.println("Tu as choisis: Fahrenheit → Celcius ;" +
                " choisis la temperature a convertir");
               
                int valeur1  = sc.nextInt();  //C'est le nombre de degres Fahrenheit choisi
               
                double resultat1 = valeur * 1.8 - 32; //Le resultat en Celcius
           
                System.out.println(valeur + "degres Fahrenheit valent" + resultat +
                    "degres Celcius" );
               
            else
               
                System.out.println("Vous n'avez pas selectionne un nombre valide");
               

    (J'ai commencé il y a peu Java, donc désolé de vous avoir importuné si ce n'est rien..)

    • Partager sur Facebook
    • Partager sur Twitter
      20 avril 2015 à 21:23:38

      Premier problème : tu dois ajouter des { } pour chaque bloc d'instructions de tes while,if,else..

      Ce qui donne une structure comme celle-ci :

      import java.util.Scanner;
      
      
      
      public class Partie1{
      
      	    /**
      	     * @param args
      	     */
      	public static void main(String[] args) {
      	        // TODO Auto-generated method stub
      
      	//Bla bla
      	        Scanner sc = new Scanner(System.in);
      	        
      	        System.out.println("CONVERTISSEUR DEGRES CELCIUS ET FAHRENHEIT");
      	        
      	        System.out.println("Taper 1 pour choisir Fahrenheit -> Celcius");
      	        
      	        System.out.println("Taper 2 pour choisir Celcius -> Fahrenheit");
      	        
      	        int choix = sc.nextInt();
      	        
      	//Debut de l'algorythme
      	        
      	        char reponse = 'O';
      	        
      	        while (reponse == 0){
      	            
      	        	if ( choix == 1){
      	        
      	        		System.out.println("Tu as choisis: Fahrenheit → Celcius ;" +" choisis la temperature a convertir");
      	        
      	        		int valeur  = sc.nextInt();  //C'est le nombre de degres Fahrenheit choisi
      	        
      	        		double resultat = (valeur - 32)/1.8; //Le resultat en Celcius
      	        
      	        		System.out.println(valeur + " degres Fahrenheit valent " + resultat + " degres Celcius" );
      	            
      	        	}else if( choix == 2){
      	    
      	        		System.out.println("Tu as choisis: Fahrenheit → Celcius ;" +" choisis la temperature a convertir");
      	            
      	        		int valeur1  = sc.nextInt();  //C'est le nombre de degres Fahrenheit choisi
      	            
      	        		double resultat1 = valeur1 * 1.8 - 32; //Le resultat en Celcius
      	        
      	        		System.out.println(valeur1 + "degres Fahrenheit valent" + resultat1 +  "degres Celcius" );
      	            
      	         }else{
      	            
      	            System.out.println("Vous n'avez pas selectionne un nombre valide");
      	         }
      	    }
      	}
      }

      Après dans ton println du elseif tu utilises valeur et resultat qui ne sont connus que dans le if. Tu dois ajouter utiliser valeur1 et resultat1. Et sachant que valeur et valeur1 sont ont la même valeur tu pourrais n'utiliser que valeur à condition de le mettre à l'extérieur de ton if.



      • Partager sur Facebook
      • Partager sur Twitter
        21 avril 2015 à 11:20:48

        Merci beaucoup , le problème est réglé ;). Juste, pouvez vous me dire ce qui ne va pas dans cette portion de code?

        import java.util.Scanner;
        
        
        public class Partie1{
        
            /**
             * @param args
             */
            public static void main(String[] args) {
                // TODO Auto-generated method stub
        
        //Bla bla
                Scanner sc = new Scanner(System.in);
               
                System.out.println("CONVERTISSEUR DEGRES CELCIUS ET FAHRENHEIT");
               
                System.out.println("Taper 1 pour choisir Fahrenheit -> Celcius");
               
                System.out.println("Taper 2 pour choisir Celcius -> Fahrenheit");
               
                int choix = sc.nextInt();
               
        //Debut de l'algorythme
               
                char reponse = 'O';
               
                while (reponse == 'O' ){
                    
                    if ( choix == 1){
                
                        System.out.println("Tu as choisis: Fahrenheit → Celcius ;"
                        +" choisis la temperature a convertir");
                
                        int valeur  = sc.nextInt();  //C'est le nombre de degres Fahrenheit choisi
                
                        double resultat = (valeur - 32)/1.8; //Le resultat en Celcius
                
                        System.out.println(valeur + " degres Fahrenheit valent "
                        + resultat + " degres Celcius" );
               
           
                }else if( choix == 2){
                      
                    System.out.println("Tu as choisis: Fahrenheit → Celcius ;"
                    +" choisis la temperature a convertir");
                
                    int valeur1  = sc.nextInt();  //C'est le nombre de degres Fahrenheit choisi
                
                    double resultat1 = valeur1 * 1.8 - 32; //Le resultat en Celcius
            
                    System.out.println(valeur1 + " degres Fahrenheit valent "
                    + resultat1 +  " degres Celcius" );
                
             }else{
                   
                    System.out.println("Vous n'avez pas selectionne un nombre valide");
                   
                }
               
                    System.out.println("Voulez vous recommencer? O/N");
                   
                    reponse = sc.nextLine().charAt(0);
                   
                }
           
               
                    System.out.println("Au revoir ;-)");
               
            }
        
        }



        Quand j'execute cette portion de code l 60-62, ce message s'affiche:

        "Voulez vous recommencer? O/N
        Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0
            at java.lang.String.charAt(String.java:658)
            at Partie1.main(Partie1.java:62)"

        -
        Edité par Ann'O'NymeCreep 21 avril 2015 à 11:22:44

        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2015 à 11:21:59

          Si tu n'as qu'une instruction dans ton if tu peux l'écrire sous cette forme: 

          if(condition) instruction;

          (ça ne te  concerne pas forcément tout de suite mais tu le saurais si jamais un jour tu en as besoin) :D 

          En ce qui concerne ton problème, on te dit que l'index 0 est en dehors de ce que t'offre ta variable il me semble. Donc essaye de séparer ton nextLine du charAt voir ce que ça donne mais je te garantie rien désolé... 

          Sinon essaye d'afficher la valeur de "reponse" pour savoir ce qu'elle contient je pense que ça t'aidera a trouver le problème :) 

          -
          Edité par Skaizer 21 avril 2015 à 11:27:51

          • Partager sur Facebook
          • Partager sur Twitter
            22 avril 2015 à 19:56:04

            Je n'ai pas compris ce que tu veux que je fasse en séparant mon nextLine du charAt?
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              24 avril 2015 à 16:41:04

              Enfait, quand tu fait charAt(int indice); la classe String te renvoie le caractère à l'indice spécifié.
              Mais si, imaginons, tu demande charAt(6); à un String de moins de 6 caractères, il y aura une erreur, puisqu'il n'y a pas de 6ème caractère.

              Un charAt(0); prend le premièr caractère, mais là, tu as une erreur qui te dit qu'il n'y a pas de premier caractère. Donc, sc.nextLine(); renvoie un String vide: "" ! Cela signifie que l'utilisateur n'a rien entré.

              Donc tu doit faire une condition pour vérifier que l'utilisateur a bien entré quelque chose:

              System.out.println("Voulez vous recommencer? O/N");
              
              String phraseReponse = sc.nextLine();
              
              //String.isEmpty(); renvoie vrai si, et seulement si, le String est vide.
              if(!phraseReponse.isEmpty()){
              	//Si ce n'est pas vide, on récupère le premier caractère.
              	reponse = phraseReponse.charAt(0);
              }else{
              	//Sinon, c'est que le String est vide, on va prendre ça pour un "non" !
              	reponse = 'N';
              }

              Ça devrait être bon !
               

              • Partager sur Facebook
              • Partager sur Twitter
                24 avril 2015 à 17:20:50

                Merci beaucoup pour ton aide !
                • Partager sur Facebook
                • Partager sur Twitter

                Problème avec if / else

                × 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