Algorithme , Java

[Résolu/Fermé]
Signaler
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017
-
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017
-
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

Messages postés
8554
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
620
Salut,

Tu utilises des classes?
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

Merci de vote réponse ! Des classes compris par la javaDoc vous voulez dire ?
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

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 !! "
Messages postés
8554
Date d'inscription
lundi 21 décembre 2015
Statut
Membre
Dernière intervention
21 juillet 2020
620
Peux-tu me donner la ligne qui compare ce qu'entre l'utilisateur et le mois inscris dans le code.
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

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);
}
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

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é
Messages postés
16409
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 octobre 2021
2 901
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
}
Messages postés
16409
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 octobre 2021
2 901
Sur le même principe que ton 1/2/3/4 dans la discussion précédente.

Exemple :

private static final Scanner scanner = new Scanner(System.in);

public static void test() {
    System.out.println("Test");
}

public static void testEnBoucle() {
    do {
        test();
    } while (continuer());
}

public static boolean continuer() {
    while (true) {
        System.out.print("Continuer ? (oui/non) : ");
        String line = scanner.nextLine().trim();
        if (line.equalsIgnoreCase("oui"))
            return true;
        if (line.equalsIgnoreCase("non"))
            return false;
    }
}

public static void main(String[] args) {
    testEnBoucle();
}
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

Merci Super Pratique !
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

Bonsoir, j'ai testé la méthode "continuer() " elle est super pratique , par contre en faisant un autre mini programme et en l’exécutant je me suis aperçus que lorsque le programme me propose de continuer il m'afficher a 2 reprise "Voulez vous continuer (oui/non) " j'ai beaux relire mon code mais rien ne me semble anormal voici mon code :
do{
System.out.println("Veuillez entrer un premier Nombre : ");
int premierNombre = scanner.nextInt();

System.out.println("Veuillez entrer un second Nombre : ");
int secondNombre = scanner.nextInt();

System.out.println("Calculer : " + premierNombre + " x " + secondNombre);
int reponseCorrecte = premierNombre * secondNombre;
int reponseEleve = scanner.nextInt();

if(reponseCorrecte == reponseEleve){
System.out.println("Trés bien ! " );
}else{
System.out.println("Non , c'était : " + reponseCorrecte);
}
}while(continuer());
}

public static boolean continuer(){
while(true){
System.out.println(" Voulez vous Continuer (Oui/non) :");
String line = scanner.nextLine();
if(line.equalsIgnoreCase("oui")){
return true;
}
else if (line.equalsIgnoreCase("non")){
return false;
}
}
}
Messages postés
16409
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
22 octobre 2021
2 901
C'est à cause des effets de bord du nextInt dont on parlait dans l'autre discussion.
Si tu veux saisir un entier il vaut mieux faire un nextLine et convertir le résultat avec un parseInt.
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

Merci Beaucoup ! Sa Fonctionne a merveille a présent , c'est en utilisant le parseInt qu'on prends conscience qu'au niveau de l'efficacité , et de l'interface utilisateur sa offre de meilleurs rendement que le nextInt.