Date du lendemain

Signaler
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
-
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
-
est- ce que vous avez une idee comment faire ce programme en console le plus simplement que possible?
merci:

Écrire un programme Java fournissant , à partir d'une date donnée sous la forme de 3 entiers (numéro de jour, numéro de mois, numéro d'année) la date du lendemain (même format: numéro de jour, numéro de mois et numéro d'année). Vous pouvez omettre de considérer les années bissextiles.

encore une fois merci

ne fais pas ce que je dis, ne dis pas ce que je fais :)

6 réponses

Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
import java.util.Calendar;

public class Date
{
   private Calendar calendrier;
   public Date(int jour,int mois,int annee)
   {   
      calendrier=Calendar.getInstance();
      calendrier.set(annee,mois,jour);  
   }
   public Date lendemain()
    {
        return new Date(calendrier.get(Calendar.DAY_OF_MONTH)+1,
                               calendrier.get(Calendar.MONTH),
                               calendrier.get(Calendar.YEAR));
    }
   public Date veille()
    {
        return new Date(calendrier.get(Calendar.DAY_OF_MONTH)-1,
                               calendrier.get(Calendar.MONTH),
                               calendrier.get(Calendar.YEAR));
    }
    public int getJour()
    {
         return calendrier.get(Calendar.DAY_OF_MONTH);
    }
    public int getMois()
    {
           return calendrier.get(Calendar.MONTH);
    }
    public int getAnnee()
     {
           return calendrier.get(Calendar.YEAR);
     }
}


Comme tu as pu le remarquer j'utilises tout simplement la classe Calendar (java.util)

Attention : Janvier =0, Février=1,... ,Décembre=11

JHelp
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
hmm, oui c bien pensé
pour les mois( Janvier =0......) je les declares ou c une convention il ya juste a prendre comme ca?

excuse un peu mon ignorance, mais pourquoi travailler avec private calendar?

merci

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
et si ont fesait ca avec le switch et le if, c d'ici que je suis partis, mais je me suis perdu dans mon resonnement %-6
t'aurais pas une idee avec c deux operateurs?

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
autre chose JHelp, kan tu met si le jour choisi est par exemple un 31-janvier donc le mois aussi doit etre incremente d'un, ainsi de suite pour le 31-12...
donc faudrait peut-etre comme g dis utiliser le SWITCH et le IF, quesque tu en penses?

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Messages postés
28
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
6 avril 2003
1
desole, au lieu de mettre code g mis photo, donc je le remet
return new Date(calendrier.get(Calendar.DAY_OF_MONTH)+1

ne fais pas ce que je dis, ne dis pas ce que je fais :)
Messages postés
261
Date d'inscription
jeudi 5 septembre 2002
Statut
Membre
Dernière intervention
6 octobre 2005
11
Pour lhistoire des mois Janvier=0, Fevrier=1, ..., Decembre=11, c'est ainsi que c'est programmé pour la classe Calendar.
C'est ainsi en général que l'on déclares les champs d'une classe en priver (private), c'est à dire que l'on empéche toutes autres calsse de le modifier directement.
Ensuite, la classe Calendar est toute faite, c'est à dire que si tu lui donne le 32 janvier, pouf, elle le transforme en premier février. Le traitement dont tu parles est déjà tout fait dans la classe Calendar, alors pourquoi s'en priver ?. En plus elle te gére même les années bisextilles.
Autrement, si tu tiens à tes switch et if, il vaut mieux ne pas utiliser la classe Calendar, et tout refaire à la main.
Dans ce cas on va choisir Janvier=1,...,Decembre=12
public void Date
{
   private int jour,mois,annee;
   public Date(int jour,int mois,int annee)
   {
       this.jour=jour;
       this.mois=mois;
       this.annee=annee;
   }
   public int getJour()
   {
        return jour;
    }
   public int getMois()
   {
       return mois;
   }
   public int getAnnee()
   {
       return annee;
    }
    public Date lendemain()
    {
        //Si on est le 28 Février et que l'année n'est pas bisextille, alors le lendemain c'est le premier Mars
        if((jour==28)&&(mois==2)&&!anneeBisextile())
           return new Date(1,3,a);
        //Si on est le 29 Février, alors le lendemein c'est le premier Mars
        if((jour==29)&&(mois==2))
           return new Date(1,3,a);
        //Si on est le 30 du mois et que le mois soit Avril, Juin, Septemebre ou Novembre, Alors le lendemain c'est le premier du mois suivant
        if((jour==30)&&((mois==4)||(mois==6)||(mois==9)||(mois==11)))
            return new Date(1,mois+1,annee);
        //Si on est le 31 du mois
        if(jour==31)
        {
             //Si on est en decembre, alors le lendemain est le premier janvier de l'année suivante
             if(mois==12)
                return new Date(1,1,annee+1);
             //Dans les autres cas, le lendemein est le premier du mois suivant
             return new Date(1,mois+1,annee);
        }
        //Si on est pas en fin de mois, le lendemain, est simplement le jour suivant
        return new Date(jour+1,mois,annee);
    }
    public boolean anneeBisextile()
     {
           //Si l'anné n'est pas divisible par 4, alors, elle n'est pas bisextile
           if(annee%4!=0)
                return false;
           //Ici on est sur que l'année est divisible par 4
           //Si l'année n'est pas divisible par 100, alors elle est bisextille
           if(annee%100!=0)
                return true;
          //Ici on est sur que l'année est divisible par 100
          //L'année est bisextile, si elle est divisible par 400
          return (annee%400)==0;
     }
}


Ceci marche, si au départ on a une date correcte.

JHelp