Question 14


Comment comparer des chaînes de caractères ?

Voici mon programme :

public class calculette
{
        public static void main(String args[])
        {
                int nombre1=Integer.parseInt(args[0]);
                int nombre2=Integer.parseInt(args[2]);
                String caractere=args[1];
               
                if (caractere=="x")
                        System.out.println("C'est une multiplication");
                if (caractere=="+")
                        System.out.println("C'est une addition");
                if (caractere=="-")
                        System.out.println("C'est une soustraction");
                if (caractere=="/")
                        System.out.println("C'est une division");
        }
}

Quand je lance le programme : java calculatrice 1 x 3 rien ne s'affiche ! J'ai essayé de mettre des ' au lieu des " mais je ne peux plus compiler mon programme car il me dit que je mets un char dans un string. Comment peut-on faire pour mettre un string en char ? Pouvez vous me donner une solution car j'en ai essayé plusieurs mais sans résultat.


Le problème vient du fait que l'on ne peut pas comparer des chaînes de caractères avec l'opérateur ==. En effet les chaînes de caractères sont des objets, et même si le contenu est le même, les objets sont différents; l'opérateur == renvoie donc false.

La solution consiste à utiliser la méthode equals des chaînes de caractères.

if (caractere.equals("x"))
         System.out.println("C'est une multiplication");
etc...

Pour passer des chaînes de caractères aux caractères, il suffit d'utiliser la méthode charAt. Par exemple, S.charAt(0) renvoie le premier caractère de la chaîne de caractères S.