Algorithme , Java

Résolu
Jiko-java Messages postés 189 Statut Membre -  
Jiko-java Messages postés 189 Statut Membre -
Bonjour, voilà Je suis actuellement sur un mini Programme qui consiste a demandé à un utilisateur d'entré un jours (compris entre 1 et 31 ) et un mois ( compris entre 1 et 12) , Ensuite une fois que le jours et le mois souhaités sont entrés je demande a l'utilisateur de dire à quelle saison correspond cette date , Si la saison entré == a la saison Correcte mon programme affiche "Très bien " dans le cas contraire il affiche "Non c'était" + saison Correcte. Mais c'est là que mon programme présente des défauts à chaque fois il affiche "Non c'était "+ saison Correcte , Bien que La saison entré correspond a la saison Correcte du coup je soupçonne l'égalité entre saison et saison Correcte d’être derrière tout sa . Pouvez-vous m'éclaircir a ce sujet ?

2 réponses

  1. Pierre1310 Messages postés 8854 Statut Membre 652
     
    Salut,

    Tu utilises des classes?
    0
    1. Jiko-java Messages postés 189 Statut Membre
       
      Merci de vote réponse ! Des classes compris par la javaDoc vous voulez dire ?
      0
    2. Jiko-java Messages postés 189 Statut Membre
       
      Si c'est le cas non , tout est fait sur une seule et même classe , j'ai pas fait d'import si ce n'est le Scanner , pour pouvoir entré le choix de l'utilisateur. Merci pour votre réponse en tout cas , en ayant regardé de plus près j'ai compris mon erreur et j'en tire une leçon a ne surtout pas négliger en programmation : " La plus part des langage de programmation , sont Sensibles à la Casse !! "
      0
    3. Pierre1310 Messages postés 8854 Statut Membre 652
       
      Peux-tu me donner la ligne qui compare ce qu'entre l'utilisateur et le mois inscris dans le code.
      0
    4. Jiko-java Messages postés 189 Statut Membre
       
      La comparaison je l'effectue simplement pour les 2 chaîne de caractère , En gros c'est sa String saisonCorrecte ="Hiver";
      String saison = scanner.nextLine();
      if(saison.equals(saisonCorrecte)){
      System.out.println(" Très bien vous avez Trouvez la bonne saison ");
      } else{
      System.out.println(" Non C'était la saison :" + saisonCorrecte);
      }
      0
    5. Jiko-java Messages postés 189 Statut Membre
       
      du coup dans mon branchement conditionnel, j'effectue une comparaison de 2 String , C'est la seule comparaison que j'effectue dans mon programme , quant au mois je l'ai mis dans un switch case du coup chaque entier entré correspond a mois , en gros sa donne sa

      switch (mois){
      case 1 : System.out.println("Janvier");
      case 2 : System.out.println(" Fevrier");
      ...

      }

      jusqu’à ce que les 12 mois soient entré
      0
  2. KX Messages postés 19031 Statut Modérateur 3 020
     
    Bonjour,

    "Si la saison entré == a la saison Correcte"
    La comparaison de deux objets avec == recherche une égalité "physique" entre ces deux objets, est-ce que c'est exactement le même objet ou non, mais dans la plupart des cas ce dont a besoin c'est de comparer les valeurs des objets, est-ce que la valeur est la même que l'autre.

    C'est pour cela qu'il faut utiliser la méthode equals() et non l'opérateur ==

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("Ecrire 'toto' : ");
        String line = sc.nextLine();
        System.out.println("line == 'toto'\t\t"+(line == "toto")); // false
        System.out.println("line.equals('toto')\t"+line.equals("toto")); // true
    }
    0
    1. Jiko-java Messages postés 189 Statut Membre
       
      Bonjours , Oui c'est ce que j'avais fait mais en fait dans mon String saisonCorrecte = 'Hiver" par exemple il y'avais un espace du coup lors de ma comparaison avec mon String saison , le programme affichait constamment que les String était != a cause de l'espace justement , Je ne savais pas que les langages de programmations était autant sensible a la casse en même temps comme c'était une comparaison de 2 String fallait s'y attendre a sachant que même un espace est considéré comme un caractère .
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Les String en Java représentent de l'UTF-16, soit potentiellement 1 million de caractères différents...

      Par exemple il y a une centaine de lettres "A" différentes (
      A
      ,
      a
      ,
      à
      ,
      â
      ,
      ä
      ,
      ã
      ...) donc oui deux caractères sont différents à la casse près.

      En revanche, il est possible de nettoyer les String pour supprimer les espaces et les comparer sans prendre en compte la casse. Exemple :

      String s1 = "     abc  ";
      String s2 = "  ABC   ";
      System.out.println(s1.trim().equalsIgnoreCase(s2.trim())); // true
      0
    3. Jiko-java Messages postés 189 Statut Membre > KX Messages postés 19031 Statut Modérateur
       
      Du coup est il possible de comparé plusieurs String soit par exemple String s1 = "Hiver" , String s2 ="hiver" , String s3 ="hiVer" ... Sans que lors de la comparaison le programme ne prennent en compte les majuscules , minuscules ... et qu'il arrive a considéré que "Hiver".equals(hiVER) ?
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      Oui et c'est exactement ce que fait mon exemple avec "abc" et "ABC"...
      0
    5. Jiko-java Messages postés 189 Statut Membre
       
      Mais du coup faudra crée autant de variable que de cas possible du mot "Hiver" par exemple : Y'a pas une instruction qui permet de couvrir tout les cas possible simplement en prenant en compte qu'une seule variable ?
      0