Algorithme "Switch case" [Fermé]

Signaler
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017
-
Messages postés
29898
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
-
Bonjours , voilà je suis occupé a codé un mini programme qui consiste à trouver le jour de la semaine d'un jour choisis dans le mois de janvier genre (19 janvier 2017 ---> Jeudi ) , cependant n'ayant pas d'autre alternative pour se faire , pour chacun des mois je suis forcé de me référé aux calendrier afin de déterminé à quel jours de la semaine correspond le premier du mois genre ( 1 janvier ----> dimanche , qui sera en quelque sorte mon point de départ) . j'aimerais donc savoir si y'a moyen d'améliorer ce programme de façon a choisir n'importe quel mois qu'on désire traité et ce sans devoir se référé pour chaque mois qu'elle jours de la semaine correspond le premier Merci d'avance :)

3 réponses

Messages postés
29898
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 894
j'veut dire selon les mois qu'on traite les premiers du mois varient pour chaque mois non ? comment arrive t-il à distinguer un mois d'un autre .?

Il ne "distingue" pas un mois d'un autre .... il te retourne DIRECTEMENT le jour de la semaine par rapport à la DATE que tu lui passes en paramètre ....

exemple :
http://www.java2s.com/Code/JavaAPI/java.util/CalendarDAYOFWEEK.htm_
import java.util.Calendar;
import java.util.GregorianCalendar;

public class Main {
  public static void main(String[] a) {
    GregorianCalendar calendar = new GregorianCalendar();
    calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
    int day = calendar.get(Calendar.DAY_OF_WEEK);
    switch (day) {
    case Calendar.MONDAY:
      System.out.println(Calendar.MONDAY);
      break;
    case Calendar.TUESDAY:
      System.out.println(Calendar.TUESDAY);
      break;
    default:  
      System.out.println("others");
    }
  }
}



1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

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

Excusé moi mais je ne comprends toujours pas son fonctionnement et il me semble qu'il fait l'inverse de la question autrement dis on passe en paramètre un jours de la semaine et là il nous envois la date associé c'est sa ? fin ma question était de déterminé un jours de la semaine ( Lundi , Mardi , Mercredi ... ) sur base d'une date entré Par exemple : le 2 Février Correspond à "Mardi" ... cependant pour savoir à quel jours de la semaine il correspond je suis forcé de voir quel est le jours de la semaine du 1 février ("Mercredi") ce qui est pas idéal sachant que pour chacun des mois le premiers du mois varient genre 1 janvier ( "Dimanche") donc ma question est : Est-il possible de déterminé chaque premier du mois sans devoir toujours consulté sont calendrier et est il possible que mon programme soit performant pour n'importe quel mois et pas seulement pour un mois en particulier ?
Messages postés
29898
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 894 >
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

Regarde mon premier exemple et n'hésite pas à lire la DOCUMENTATION de la fonction.....!!!!

Dans le premier exemple je t'avais marqué :
Calendar c = Calendar.getInstance();
c.setTime(yourDate);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
  • yourDate = UNE DATE


int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);
  • dayOfWeek = INTEGER correspondant au NUMERO DU JOUR (de cette date dans la semaine)


Résultat ... aucun besoin de récupérer le premier jour du mois pour faire ton calcul...puisque cette fonction te retourne directement le résultat souhaité.
Ce n'est pourtant pas compliqué à comprendre... si ??
Messages postés
186
Date d'inscription
dimanche 25 septembre 2016
Statut
Membre
Dernière intervention
22 juillet 2017

Merci , mais il n'est pas nécessaire de répondre d'une manière hautaine comme vous l'avez faites , j'voulais juste en savoirs d'avantage a ce sujet et me documenté rien de plus , Pardonné mon manque d'expérience dans la programmation , je débute seulement par conséquent je n'ai pas l'habitude de manipulé des Objets , Tout comment vous à vos débuts sans doute . Sa ne m'a pas éclairci d'avantage Mais je tacherais de consulter la Documention comme vous me l'avez recommandé Merci quand même bien à vous.
Messages postés
29898
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 894
Bonjour
Via java.util.Calendar


Calendar c = Calendar.getInstance();
c.setTime(yourDate);
int dayOfWeek = c.get(Calendar.DAY_OF_WEEK);

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

Merci pour Votre intervention du coup si je comprend Bien "Calendar" est un Objet déjà présent dans la JavaDoc ? et Un point M'intrigue tout de même Comment fonctionne - il ? j'veut dire selon les mois qu'on traite les premiers du mois varient pour chaque mois non ? comment arrive t-il à distinguer un mois d'un autre .?
Voilà mon code:


public class Fevrier{
  public static java.util.Scanner scanner = new java.util.Scanner(System.in);
  public static void main(String[]args){
  
  System.out.println("Veuillez entré un jour du mois de Février ");
    int jour = scanner.nextInt();
  System.out.println(jour + " octobre" + " 2016");

   int jourSemaine = jour % 7;
   
  switch(jourSemaine){
  
   case 6 : System.out.println("Lundi");
             break;
   case 0 : System.out.println("Mardi");
             break;
   case 1 : System.out.println("Mercredi");
             break;
   case 2 : System.out.println("Jeudi");
             break;
   case 3 : System.out.println("Vendredi");
             break;
   case 4 : System.out.println("Samedis");
             break;
   case 5 : System.out.println("Dimanche");
             break;
   default : System.out.println("Problème");
  }

 }
}

Messages postés
29898
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 octobre 2020
2 894
Désolé si ma réponse te semble "hautaine" ... mais tu tends le bâton pour te faire bâttre....

Pardonné mon manque d'expérience dans la programmation , je débute seulement par conséquent je n'ai pas l'habitude de manipulé des Objets , Tout comment vous à vos débuts sans doute

Oui mais non... j'ai toujours su chercher sur le net ... et je ne posais des questions que si mes recherches n'avaient réellement rien données.
Idem lorsque la réponse que l'on me donnait contenait des choses que je ne connaissai pas... je regardai sur le net si je pouvais trouver leur signification avant de quémander une autre réponse.

Mais je tacherais de consulter la Documention comme vous me l'avez recommandé

C'est bien . C'est justement ce que je te reprochai de ne pas avoir fait... avant ...
Regarde la doc du CALENDAR :https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html


Sa ne m'a pas éclairci d'avantage

Que ne comprends tu pas au juste ???

Tu nous demandes :
ma question était de déterminé un jours de la semaine ( Lundi , Mardi , Mercredi ... ) sur base d'une date entré Par exemple : le 2 Février Correspond à "Mardi"


Ma réponse est :
il te retourne DIRECTEMENT le jour de la semaine par rapport à la DATE que tu lui passes en paramètre ....


Autrement dit .. du lui demande le DAY_OF_WEEK du 2février 2017 ... et il te dira que c'est... le numéro : 3 (soit.. MARDI... )

Days of week are represented as:
SUNDAY = 1
MONDAY = 2
TUESDAY = 3
WEDNESDAY = 4
THURSDAY = 5
FRIDAY = 6
SATURDAY = 7


Tu peux aussi utiliser les constantes de CALENDAR pour identifier le jour :
par exemple
calendar.setTime(new Date());
int today = calendar.get(calendar.DAY_OF_WEEK);
      
switch (today) {
  case GregorianCalendar.MONDAY:
      System.out.println("Lundi");
      break;
  case GregorianCalendar.TUESDAY:
      System.out.println("Mardi");
      break;
  case GregorianCalendar.WEDNESDAY:
      System.out.println("Mercredi");
      break;
  case GregorianCalendar.THURSDAY:
      System.out.println("Jeudi");
      break;
  case GregorianCalendar.FRIDAY:
     System.out.println("Vendredi");
      break;
  case GregorianCalendar.SATURDAY:
     System.out.println("Samedi");
      break;
  case GregorianCalendar.SUNDAY:
     System.out.println("Dimanche");
      break;

}

Dans cet exemple ...
new Date()
correspond à la date du jour ....

Est-ce plus clair maintenant ?