Algorithme " Les branchements conditionnels "
Jiko-java
Messages postés
186
Date d'inscription
Statut
Membre
Dernière intervention
-
Jiko-java Messages postés 186 Date d'inscription Statut Membre Dernière intervention -
Jiko-java Messages postés 186 Date d'inscription Statut Membre Dernière intervention -
Bonjour, Voilà je suis actuellement sur un mini programme que j'essaie d'améliorer au mieux ce dernier consiste a entré une date (jours et mois) et à afficher la saison auxquels la date correspond Exemple : "21 décembre : Hiver " cependant ayant déjà fait le programme , après mûres réflexions j'ai pris conscience que"mes branchements conditionnels " (if , else) étaient beaucoup trop long et qu'une simplification de tout sa s'imposaient du coup ayant simplifier du mieux que je peut mes branchement je m’aperçois que le programme m'affichais une saison erroné selon la date entré, du coup je bloque avec des conditions illisible, incompréhension et interminable ! voilà une idée d'ou j'en suis :
if (jours >= 21 && mois == 12 || mois == 1 || mois == 2 || mois == 3 && jours <= 20){
System.out.println(" Hiver : " + jours + " / " + mois);
}
if (jours >= 21 && mois == 12 || mois == 1 || mois == 2 || mois == 3 && jours <= 20){
System.out.println(" Hiver : " + jours + " / " + mois);
}
A voir également:
- Algorithme " Les branchements conditionnels "
- Logiciel algorithme euromillion - Télécharger - Loisirs créatifs
- Ecrire un algorithme qui permet de resoudre ax²+bx+c=0 pdf - Forum Algorithmes / Méthodes
- Algorithme ajout rapide snapchat ✓ - Forum Snapchat
- Logiciel algorithme gratuit - Télécharger - Édition & Programmation
- Algorithme euromillion excel gratuit - Forum Algorithmes / Méthodes
2 réponses
Bonjour
tu peux utiliser un swicth
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
ou alors utiliser vraiment des dates
https://jmdoudoux.developpez.com/cours/developpons/java/chap-utilisation_dates.php
tu peux utiliser un swicth
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
ou alors utiliser vraiment des dates
https://jmdoudoux.developpez.com/cours/developpons/java/chap-utilisation_dates.php
Bonjour,
Tu peux également réutiliser ton programme de comparaison de dates pour savoir si ta date est inférieure ou supérieure aux solstices et équinoxes.
Remarque : les dates des solstices et équinoxes varient d'une année sur l'autre. Voir le détail sur Wikipédia.
Tu peux également réutiliser ton programme de comparaison de dates pour savoir si ta date est inférieure ou supérieure aux solstices et équinoxes.
Remarque : les dates des solstices et équinoxes varient d'une année sur l'autre. Voir le détail sur Wikipédia.
Merci pour votre intervention , j'comprends votre réflexion donc l'idée serait de récupéré la classe "CompareDate" d'entré une date souhaité et selon la date il devra comparé les dates des solstices et équinoxes de façon à déterminé si la date se trouve dans un hiver boréal , ete boréal et le tout se trouvera dans plusieurs branchement conditionnels .... Mais j'ai du mal a le conceptualisé de plus comment Ma date CompareDate pourraient prendre en compte les solstices et les équinoxes
Très simplement en fait.
Simplifions en considérant que les solstices et équinoxes sont toujours le même jour d'une année sur l'autre.
Tu fais une comparaison de ta date avec le solstice d'été, si ta date est inférieure tu la compare avec l'équinoxe de printemps, sinon avec l'équinoxe d'automne.
Ces deux tests te permettent de découper l'année en 4 saisons, il faudra juste gérer le cas particulier de l'hiver après l'automne (semaine du 21 au 31 décembre).
Simplifions en considérant que les solstices et équinoxes sont toujours le même jour d'une année sur l'autre.
Tu fais une comparaison de ta date avec le solstice d'été, si ta date est inférieure tu la compare avec l'équinoxe de printemps, sinon avec l'équinoxe d'automne.
Ces deux tests te permettent de découper l'année en 4 saisons, il faudra juste gérer le cas particulier de l'hiver après l'automne (semaine du 21 au 31 décembre).
Je comprends l'idée de segmenté l'année en 4 partie et de se préoccupé que des cas ou les solstices et les équinoxe sont impliqué a savoir de Mars à juin , de juin à septembre , de septembre a décembre et de décembre à Mars , mais ce que j'ai du mal a comprendre C'est l'a manière de matérialisé mes branchements Puisque si on considère par exemple l'été on suppose qu'il y'a au total 94 jours , mais c'est jours là j'dois les convertir en mois auxquels ils appartiennent Fin voilà ce que j'ai du mal a comprendre c'est comment puis-je comparé par exemple cette date 25 / 8 et déterminé qu'il fait partit de la saison d'été et sachant que la saison d'été comporte 94 jours.
Peu importe le nombre de jours dans la saison. Il n'y a que 4 dates qui sont utiles, ce sont les équinoxes et solstices qui déterminent les moments où changent les saisons.
Puisque tu as déjà une méthode de comparaison des dates il faut t'en servir ce qui simplifie énormément le problème.
Par exemple, l'équinoxe de printemps tombe (en général) le 20 mars, donc si tu compares ta date au 20 mars et qu'elle est plus petite alors tu sais que c'est un jour d'hiver...
Puisque tu as déjà une méthode de comparaison des dates il faut t'en servir ce qui simplifie énormément le problème.
Par exemple, l'équinoxe de printemps tombe (en général) le 20 mars, donc si tu compares ta date au 20 mars et qu'elle est plus petite alors tu sais que c'est un jour d'hiver...
Oui je vois c'est ce que j'ai essayé de faire dans ma méthode CompareDate() du coup je me retrouve avec sa comme Branchement:
public static int compareDate(int jourDate1, int moisDate1, int anneeDate){ if(jourDate1 >= 21 && moisDate1 >= 3 && jourDate1 <=20 && moisDate1 <=6) return 2; if(jourDate1 >= 21 && moisDate1 >= 6 && jourDate1 <=20 && moisDate1 <=9) return 1; if(jourDate1 >= 21 && moisDate1 <= 9 && jourDate1 <=20 && moisDate1 <=12) return 0; return -1; }mais étant donné que ma méthode dois me return un entier j'étais forcé de retourné dans ma méthode main afin qu'il fasse correspondre les return et qu'il affiche la saison mais le problème c'est qu'a chaque fois que j'entre une date il m'affiche hiver :/ :
public static void main(String[] args) { System.out.println("Tests de la methode compareDate"); System.out.println("Entrez la date1 sous le format JJ/MM/AA"); int [] date1 = lireJJMMAA(); int comparaison = compareDate(date1[0], date1[1], date1[2]); if (comparaison == 2) System.out.println("Printemps"); if (comparaison == 1) System.out.println("Ete"); if (comparaison == 0) System.out.println("Automne"); else System.out.println("Hiver");
Explications disponibles ici : ICI
Merci d'y penser dans tes prochains messages.