Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL LE JOUR SUIVANT D'UNE DATE EN FONCTION DES ANNÉES BISSEXTILE ET LE NOMBRE DE JOURS DANS CHAQUE MOIS.


Information sur la source

Catégorie :Application Classé sous : bissextile, année, nombreJoursMois, date lendemain, tpJourSuivant Niveau : Débutant Date de création : 26/01/2008 Date de mise à jour : 30/01/2008 18:22:09 Vu : 7 756

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Calcule et affiche le jour suivant d'une date en fonction des années bissextile et le nombre de jours dans chaque mois.
 

Source

  • //AUTEUR : BY ALINO-91
  • import java.util.Scanner;
  • public class JourSuivant {
  • public static void main(String[] args) {
  • JourSuivant objProgramme = new JourSuivant();
  • objProgramme.menu();
  • }
  • private void menu() {
  • Scanner objSaisie = new Scanner(System.in);
  • int choix = 0;
  • while (choix != 2) {
  • System.out.println(" ");
  • System.out.println("***********************************************************");
  • System.out.println("* 1 : Saisir une date et connaître la date du lendemain *");
  • System.out.println("* 2 : Quitter le programme *");
  • System.out.println("***********************************************************");
  • System.out.println(" ");
  • System.out.println(" Faites votre choix par rapport au menu ci-dessus, en saisissant le nombre" +
  • " qui correspond au choix que vous désirez, suivi de la touche entrée : ");
  • choix = objSaisie.nextInt();
  • while (choix < 1 || choix > 2) {
  • System.out.println("erreur, veuillez saisir un nombre qui correspond à un choix possible entre [1;2] ");
  • choix = objSaisie.nextInt();
  • }//fin while
  • if (choix == 1) {
  • this.saisisDate();
  • }
  • }//fin while
  • System.out.println(" ");
  • System.out.println("Fin du programme");
  • System.out.println(" ");
  • }//fin private void menu
  • private void saisisDate() {
  • Scanner objSaisie = new Scanner(System.in);
  • int jour, mois, annee;
  • int nbrJoursMois;
  • boolean anneeBissextileOuNon;
  • String dateLendemain;
  • System.out.println(" ");
  • System.out.println("Saisir un jour compris entre 1 et 31");
  • jour = objSaisie.nextInt();
  • jour = this.verificationSaisis(jour, 1, 31);
  • System.out.println(" ");
  • System.out.println("Saisir un mois compris entre 1 et 12");
  • mois = objSaisie.nextInt();
  • mois = this.verificationSaisis(mois, 1, 12);
  • System.out.println(" ");
  • System.out.println("Saisir une année quelconque");
  • annee = objSaisie.nextInt();
  • annee = this.verificationSaisis(annee, 1582, Integer.MAX_VALUE);
  • System.out.println(" ");
  • anneeBissextileOuNon = this.anneeBissextile(annee);
  • nbrJoursMois = this.calculeNbrJoursMois(mois, anneeBissextileOuNon);
  • dateLendemain = this.calculDateLendemain(jour, mois, annee, nbrJoursMois);
  • System.out.println("------------------------------------------------------------------------------------------------------");
  • System.out.println("La date du lendemain, (en fonction de la date saisis précédemment) est : " + dateLendemain);
  • System.out.println("----------------------------------------------------------------------------------------------------- ");
  • }//fin private void saisisDate
  • private String calculDateLendemain(int jour, int mois, int annee, int nbrJoursMois) {
  • Scanner objSaisie = new Scanner(System.in);
  • String dateLendemain;
  • if (jour > nbrJoursMois) {
  • do {
  • System.out.println("Erreur, le mois saisis ne peut pas comprendre " + jour + " jours. Veuillez saisir un jour qui est" +
  • " compris dans le mois et l'année que vous avez saisis précédemment");
  • jour = objSaisie.nextInt();
  • } while (jour > nbrJoursMois || jour <= 0);
  • }
  • jour++;
  • if (jour == nbrJoursMois + 1) {
  • mois++;
  • jour = 1;
  • }
  • if (mois == 13 && jour == 1) {
  • annee++;
  • mois = 1;
  • }
  • dateLendemain = jour + "/" + mois + "/" + annee;
  • return dateLendemain;
  • }//fin private String calculDateLendemain
  • private int verificationSaisis(int valeur, int min, int max) {
  • Scanner objSaisie = new Scanner(System.in);
  • while (valeur < min || valeur > max) {
  • System.out.println("erreur, veuillez saisir un nombre compris entre " + min + " et " + max);
  • valeur = objSaisie.nextInt();
  • }
  • return valeur;
  • }//fin private int verificationSaisis
  • private boolean anneeBissextile(int annee) {
  • boolean booleen = false;
  • if (annee % 400 == 0 || annee % 4 == 0 && annee % 100 != 0) {
  • booleen = true;
  • }
  • return booleen;
  • }//fin private boolean anneeBissextile
  • private int calculeNbrJoursMois(int mois, boolean anneeBissextileOuNon) {
  • int jours = 0;
  • switch (mois) {
  • case 1:
  • case 3:
  • case 5:
  • case 7:
  • case 8:
  • case 10:
  • case 12:
  • jours = 31;
  • break;
  • case 4:
  • case 6:
  • case 9:
  • case 11:
  • jours = 30;
  • break;
  • case 2:
  • if (mois == 2 && anneeBissextileOuNon == true) {
  • jours = 29;
  • } else {
  • jours = 28;
  • }
  • break;
  • }//ferme le switch
  • return jours;
  • }//fin private int calculeNbrJoursMois
  • }//fin public class JourSuivant
//AUTEUR : BY ALINO-91
import java.util.Scanner;

public class JourSuivant {

    public static void main(String[] args) {
        JourSuivant objProgramme = new JourSuivant();
        objProgramme.menu();
    }

    private void menu() {

        Scanner objSaisie = new Scanner(System.in);

        int choix = 0;

        while (choix != 2) {

            System.out.println(" ");
            System.out.println("***********************************************************");
            System.out.println("* 1 : Saisir une date et connaître la date du lendemain   *");
            System.out.println("* 2 : Quitter le programme                                *");
            System.out.println("***********************************************************");

            System.out.println(" ");
            System.out.println(" Faites votre choix par rapport au menu ci-dessus, en saisissant le nombre" +
                    " qui correspond au choix que vous désirez, suivi de la touche entrée : ");
            choix = objSaisie.nextInt();

            while (choix < 1 || choix > 2) {
                System.out.println("erreur, veuillez saisir un nombre qui correspond à un choix possible entre [1;2] ");
                choix = objSaisie.nextInt();
            }//fin while

            if (choix == 1) {
                this.saisisDate();
            }
            
        }//fin while
        System.out.println(" ");
        System.out.println("Fin du programme");
        System.out.println(" ");
    }//fin private void menu
    private void saisisDate() {

        Scanner objSaisie = new Scanner(System.in);

        int jour, mois, annee;
        int nbrJoursMois;
        boolean anneeBissextileOuNon;
        String dateLendemain;

        System.out.println(" ");
        System.out.println("Saisir un jour compris entre 1 et 31");
        jour = objSaisie.nextInt();
        jour = this.verificationSaisis(jour, 1, 31);
        System.out.println(" ");

        System.out.println("Saisir un mois compris entre 1 et 12");
        mois = objSaisie.nextInt();
        mois = this.verificationSaisis(mois, 1, 12);
        System.out.println(" ");

        System.out.println("Saisir une année quelconque");
        annee = objSaisie.nextInt();
        annee = this.verificationSaisis(annee, 1582, Integer.MAX_VALUE);
        System.out.println(" ");

        anneeBissextileOuNon = this.anneeBissextile(annee);
        nbrJoursMois = this.calculeNbrJoursMois(mois, anneeBissextileOuNon);
        dateLendemain = this.calculDateLendemain(jour, mois, annee, nbrJoursMois);
        System.out.println("------------------------------------------------------------------------------------------------------");
        System.out.println("La date du lendemain, (en fonction de la date saisis précédemment) est : " + dateLendemain);
        System.out.println("----------------------------------------------------------------------------------------------------- ");

    }//fin private void saisisDate
    private String calculDateLendemain(int jour, int mois, int annee, int nbrJoursMois) {

        Scanner objSaisie = new Scanner(System.in);

        String dateLendemain;

        if (jour > nbrJoursMois) {
            do {
                System.out.println("Erreur, le mois saisis ne peut pas comprendre " + jour + " jours. Veuillez saisir un jour qui est" +
                        " compris dans le mois et l'année que vous avez saisis précédemment");
                jour = objSaisie.nextInt();
            } while (jour > nbrJoursMois || jour <= 0);
        }

        jour++;

        if (jour == nbrJoursMois + 1) {
            mois++;
            jour = 1;
        }

        if (mois == 13 && jour == 1) {
            annee++;
            mois = 1;
        }

        dateLendemain = jour + "/" + mois + "/" + annee;
        return dateLendemain;

    }//fin private String calculDateLendemain
    private int verificationSaisis(int valeur, int min, int max) {

        Scanner objSaisie = new Scanner(System.in);

        while (valeur < min || valeur > max) {

            System.out.println("erreur, veuillez saisir un nombre compris entre " + min + " et " + max);
            valeur = objSaisie.nextInt();
        }

        return valeur;

    }//fin private int verificationSaisis
    private boolean anneeBissextile(int annee) {

        boolean booleen = false;

        if (annee % 400 == 0 || annee % 4 == 0 && annee % 100 != 0) {

            booleen = true;
        }

        return booleen;

    }//fin private boolean anneeBissextile
    private int calculeNbrJoursMois(int mois, boolean anneeBissextileOuNon) {

        int jours = 0;

        switch (mois) {

            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                jours = 31;
                break;

            case 4:
            case 6:
            case 9:
            case 11:
                jours = 30;
                break;

            case 2:
                if (mois == 2 && anneeBissextileOuNon == true) {
                    jours = 29;
                } else {
                    jours = 28;
                }

                break;
        }//ferme le switch

        return jours;

    }//fin private int calculeNbrJoursMois
}//fin public class JourSuivant

Historique

27 janvier 2008 19:59:29 :
while (jour > nbrJoursMois || jour <= 0); A modifier dans la méthode calculDateLendemain

Commentaires et avis

signaler à un administrateur
Commentaire de sheorogath le 27/01/2008 00:03:10 administrateur CS

niveau code on auras vu mieu ....

private boolean isBissextile(int annee){
return (annee % 400 == 0 || annee % 4 == 0 && annee % 100 != 0);
}

et pour optimiser

private boolean isBissextile(int annee){
if (annee & 3)
return false;
return (annee % 400 == 0 || annee % 4 == 0 && annee % 100 != 0);
}

signaler à un administrateur
Commentaire de Renfield le 27/01/2008 07:43:50 administrateur CS

=> allez sur codyx...

http://www.codyx.org/snippet_determiner-si-annee-est-bissextile_249.aspx#1034

signaler à un administrateur
Commentaire de alino91 le 27/01/2008 14:00:25

Au lieu de critiquer mon code. Vous feriez mieux de le lire et d'y voir que ce code sans faire appel à je ne sais quelle méthode pré-codé, calcule la date du lendemain d'une date saisis en fonction des années bissextile et du nombre de jours de chaque mois.

Donc je vous le dit à tous avant de critiquer, regardé si il y a un code sur ce site qui fait ce travail là ?
Je réponds à la question, non.

Donc mon code est bon et propre, donc la critique est inutile.

Merci de votre compréhension.

signaler à un administrateur
Commentaire de alino91 le 27/01/2008 14:04:24

C'est un vrai programme, tu l'éxécutes, il fait une tâche précise, donc c'est un programme qui fait quelque chose.

Donc je le laisse ici.

:-)

signaler à un administrateur
Commentaire de coucou747 le 27/01/2008 14:07:29

tu postes tes programmes de TP, c'est marque dans ton screen... a ce rythme la, j'aurais deja 1500 sources ici... poste au moins des vrais projets ou des trucs interessants, pas des choses que tout le monde fait en cours ou des choses tellement classiques qu'un prof te les demande en premiere annee...

calculer la date du lendemain c'est pas ce que j'appelle un "travail"

signaler à un administrateur
Commentaire de alino91 le 27/01/2008 14:10:30

Ecoute, si il y avait eu ce code source, sur ce site, le jour où je galérai à faire ce programme, j'aurai bien été content d'avoir cette source sur ce site, pour pouvoir soit la copier, soit m'en inspirer pour pondre un nouveau truc. Donc moi je pars dans cette optique là, donc dans ce cas c'est un vrai travail, jte donnerai la note pour ce tp si tu veux.

signaler à un administrateur
Commentaire de coucou747 le 27/01/2008 14:18:52

si t'as galerer a faire ce programme alors pourquoi t'as poste une source niveau initie ici ?

#  if (jour > nbrJoursMois) {
# do {
# System.out.println("Erreur, le mois saisis ne peut pas comprendre " + jour + " jours. Veuillez saisir un jour qui est" +
# " compris dans le mois et l'année que vous avez saisis précédemment");
# jour = objSaisie.nextInt();
# } while (jour > nbrJoursMois);
# }

tu pourrais mettre un while et pas un if + un do...while, le code n'en serait que plus clair...

on peut saisir un jours negatif ? un jours null ?

}//ferme le switch
commentaire pertinant...

signaler à un administrateur
Commentaire de alino91 le 27/01/2008 14:25:18

Ecoute moi bien, mon programme fonctionne parfaitement et n'a aucune faille, donc c'est pas la peine de parler pour dire des betises. Execute le et si tu vois une faute ou faille tu viendras m'en reparler ok ?

La seule faute que tu pourras trouver c'est que quand tu saisis une string ou un char le programme plante.

Sinon pour ton interface graphique, jm'en fiche de l'interface graphique premio, deuxio c'était pas demandé par la prof, troisio on a que vu les joption.pane les fenetres graphiques la qui s'affiche et moi ça me dérange pas les system.out.println donc réponse pertinente à tes questions inutiles.

et troisio la prof voulez que ça soit présenter comme ça et pas autrement et ne voulait pas qu'on utilise des choses qu'on avait pas vu en cours l'ami.

signaler à un administrateur
Commentaire de alino91 le 27/01/2008 14:26:14

Sur ce jvais aller faire mon mcd, vus que jdois le rendre demain, et j'espère que cette source aidera des gens un jour. Sinon ben bonne fin de week l'ami lol.

signaler à un administrateur
Commentaire de coucou747 le 27/01/2008 17:05:26

le voila ton bug...

ca t'arrive d'ecouter ce qu'on te dit ??


init:
deps-jar:
compile:
run:

***********************************************************
* 1 : Saisir une date et connaître la date du lendemain *
* 2 : Quitter le programme *
***********************************************************

Faites votre choix par rapport au menu ci-dessus, en saisissant le nombre qui correspond au choix que vous désirez, suivi de la touche entrée :
1

Saisir un jour compris entre 1 et 31
31

Saisir un mois compris entre 1 et 12
2

Saisir une année quelconque
2007

Erreur, le mois saisis ne peut pas comprendre 31 jours. Veuillez saisir un jour qui est compris dans le mois et l'année que vous avez saisis précédemment
-2
------------------------------------------------------------------------------------------------------
La date du lendemain, (en fonction de la date saisis précédemment) est : -1/2/2007
-----------------------------------------------------------------------------------------------------

***********************************************************
* 1 : Saisir une date et connaître la date du lendemain *
* 2 : Quitter le programme *
***********************************************************

Faites votre choix par rapport au menu ci-dessus, en saisissant le nombre qui correspond au choix que vous désirez, suivi de la touche entrée :

signaler à un administrateur
Commentaire de alino91 le 27/01/2008 19:55:14

Merci pour l'info l'ami, j'avais pas vu l'erreur, t'as raison sur ce coup par contre j'avou. Je corrige de suite.

Commentaire pertinent de ta part, tu devrais en faire plus des comme ça et sur ce ton comme ça on t'écoute et on approuve ce que tu dis, si c'est vrai.

Merci pour ta remarque :-)

signaler à un administrateur
Commentaire de coucou747 le 27/01/2008 21:04:34

pour faire simple : je n'avais pas le temps de tester ton code, le lire me suffisait pour voir le bug...

signaler à un administrateur
Commentaire de sheorogath le 27/01/2008 23:58:29 administrateur CS

quand tu postes une source ici tu te soumet a la critique
les critiques permettent de progresser et j'aime quand on critique mes sources de facon contructive de maniere a me permettre de progresser

signaler à un administrateur
Commentaire de shaiulud le 29/01/2008 10:30:35 7/10

Ton code est didactique mais est peu Objet.
Pourquoi ne pas utiliser java.util.Date et java.util.Calendar ?


Calendar cal = Calendar.getInstance();
cal.setLenient(false);
try {
cal.set(annee, mois, jour, 0, 0, 0);
cal.setTimeInMillis(0);

cal.add(Calendar.DATE, 1);

Date demain = cal.getTime();
} catch (Exception e) {
System.out.println("c'est pas une date");
}

signaler à un administrateur
Commentaire de Twinuts le 30/01/2008 18:21:00 administrateur CS

Salut,

bon je vais sûrement me faire l'avocat du diable :
- Ton code n'a rien d'initié... (je le repasse en débutant)
- Les critiques ci-dessus sont toutes fondées et si tu ne les acceptes pas arrête simplement de poster des sources...
- Ton code n'est absolument pas optimisé...
- Ton code n'est objet que par le fait d'utiliser java...
- Tu dis plus haut :
"mon programme fonctionne parfaitement et n'a aucune faille"
et ligne plus bas :
"La seule faute que tu pourras trouver c'est que quand tu saisis une string ou un char le programme plante."
ensuite coucou747 trouve un bug...faudrai savoir ton code n'a aucune faille ou il en a ?......
etc...

De plus merci d'éviter de t'enflammer comme tu le fais, quand des gens font une critique sur tes travaux...

signaler à un administrateur
Commentaire de muad-dib le 02/02/2008 11:13:50

Il faut accepter la critique et ne pas se prendre pour le Dieu de la programmation. Laisse moi te dire en tant que professionnel qu'au vu de ton code, tu as encore beaucoup de chemin a parcourir et beaucoup de critiques a encaisser si tu veux t ameliorer.

signaler à un administrateur
Commentaire de nassimassabah le 12/04/2008 03:06:54

ou est la classe scanner?
erreur de compilation.

signaler à un administrateur
Commentaire de sheorogath le 12/04/2008 03:07:51 administrateur CS

a partir du JDK1.5

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Besoin d'un p'tit coup de pouce!!! [ par Milie ] Bonjour à tous!!Je suis en deuxiéme année de DUT informatique option imagerie numérique et mon projet de fin d'année porte sur le langage Java.Je cher Source Jeu Tarot !!! Aidez moi !!! [ par TeKCoP ] Bonjour, tout le monde !!!Jaurai besoin de votre aide, je m'explique, je suis a IUT info 1er année et jai un jeu de tarot a realise pour un projet. Je Comment obtenir l'année de la date du jour - URGENT [ par chyplie ] Bonjour j'aurais aimer savoir comment obtenir l'année de la date système, celle ci doit ensuite être accessible de toutes mes classes. Merci Class Date - - débutant !! [ par juancho2786 ] Bonsoir, je suis debutant et j'airamerais savoir si la class Date est bien faite ( peut etre rajouter des commentaires) et s'il faut rajouter encore d Biomédical/informatique, des débouchés? [ par Nicooo24 ] Bonsoir, Voila,je suis actuellement en école d'ingénieur en Biomédical (1ere année) mais je souhaite avoir un peu plus de précision. Alors avant tout


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.