Bonjour,
Etant débutant en programmation Java, je souhaiterais avoir une aide sur le programme suivant (non terminé, pour cause de blocage et d'énervement !), regardez les parties en rouge (je doute fortement sur la méthode "j_d_m" ainsi que sur l'affichage des dates suivantes), si vous avez des propositions d'amélioration significative de tout ceci n'hésitez-pas ! merci d'avance...

:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
 import java.util.*;


    public class DateBasicJourSuivantEleve {
   
   //Calcul du nombre de jour dans un mois donne d'une annee donnee
   //methode de classe !
   
       static int j_d_m(int leMois, int lAnnee){
      
      //Entrees - leMois : mois codé par un entier allant de 1 à 12
      //                lAnnée : l'année 
      //Sortie : le nombre de jours pour le mois de l'année donnés (année bissextile ou non)
      
      
          int j_d_m;

         if(leMois==1||leMois==3||leMois==5||leMois==7||leMois==8||leMois==10||leMois==12) 

            j_d_m=31;
         else j_d_m=30;

         //if(leMois==4||leMois==6||leMois==9||leMois==11)j_d_m = 30;
         if(leMois==2) {
            if(lAnnee%4!=0||(lAnnee%100==0&&lAnnee%400!=0)) j_d_m=28;
            else j_d_m=29;
         }                                
          //
      
         return j_d_m;
      
      }//j_d_m
   
   
    
   
       public static void main(String [] args) {
      
      
         Date maintenant;
         long tdebut,tempsCourant = System.currentTimeMillis ();
         int diftemp, d,m,a,da,h,min,sec;
      
         maintenant = new Date();
         GregorianCalendar Calendar = new GregorianCalendar();
         Calendar.setTime(maintenant); 
      
      
         a=Calendar.get(Calendar.YEAR);          // année
         m=Calendar.get(Calendar.MONTH);         // mois de 0 à 11 et non 1 à 12 !!!!
      //(la raison de ce codage m'est inconnue mais je conserve cette notation)
         da=Calendar.get(Calendar.DAY_OF_MONTH); // jour du mois 1 à 31
         d=Calendar.get(Calendar.DAY_OF_WEEK);   // jour de la semaine de 1 à 7
      //    h=Calendar.get(Calendar.HOUR);          // heure de 0 à 11
         h=Calendar.get(Calendar.HOUR_OF_DAY);   // heure de 0 à 23
         min=Calendar.get(Calendar.MINUTE);          // minutes de 0 à 59
         sec=Calendar.get(Calendar.SECOND);      // secondes de 0 à 59
      
      // affichage de la date          
         System.out.println(String.valueOf(da)+"/"+String.valueOf(m+1)+"/"+String.valueOf(a));
         System.out.println(jour[d]+" "+ String.valueOf(da)+" "+ mois[m]+" "+String.valueOf(a));
      //Test j_d_m
         System.out.println("Le nombre de jours dans le mois " + 1 + " de l'année " + 2002 + " est :" + j_d_m(1, 2002));
         System.out.println("Le nombre de jours dans le mois " + 2 + " de l'année " + 2002 + " est :" + j_d_m(2, 2002));
         System.out.println("Le nombre de jours dans le mois " + 4 + " de l'année " + 2002 + " est :" + j_d_m(4, 2002));
         System.out.println("Le nombre de jours dans le mois " + 12+ " de l'année " + 2002 + " est :" + j_d_m(12,2002));
         System.out.println("Le nombre de jours dans le mois " + 2 + " de l'année " + 2004 + " est :" + j_d_m(2, 2004));
         System.out.println("Le nombre de jours dans le mois " + 2 + " de l'année " + 2000 + " est :" + j_d_m(2, 2000));
         System.out.println("Le nombre de jours dans le mois " + 2 + " de l'année " + 2100 + " est :" + j_d_m(2, 2100));
      
       // affichage des dates suivantes
         for(int i = 1; i <= 80; i++) {
            da++;
            if(da==32 && (m==0||m==2||m==4||m==6||m==7||m==9||m==11))
            {da=1;m++;}
            else{

               if((m==3||m==5||m==8||m==10)&&da==31) {da=1;m++;}
               else
               {
                  if((a%4!=0||(a%100==0&&a%400!=0))&&da==29 &&m==1) {da=1;m++;}
                  else {
                      if(m==11&&da==32){m=0;d=1;a++;}
               }    }  }               
         
            System.out.println(String.valueOf(da)+"/"+String.valueOf(m+1)+"/"+String.valueOf(a));
         
         }//for
      
      
      }//main
   
   
      private final static String jour[] = {
         
         " ","dimanche","lundi", "mardi", "mercredi", "jeudi","vendredi",
         "samedi" 
         
         };
   
   
      private final static String mois[] = {
         
         "janvier", "févier", "mars", "avril", "mai", "juin",
         "juillet", "août", "septembre", "octobre", "novembre", "décembre"
         
         
         };
   
   
   } //DateBasicJourSuivantEleve