Algorithme , Java
Résolu
Jiko-java
Messages postés
189
Statut
Membre
-
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
-
-
-
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 !! "
-
-
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);
} -
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é
-
-
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 }-
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 .
-
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
-
-
-
-