L'error ??
ibrahim
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
j trov pa l'error !
class date2
j trov pa l'error !
import java.io.*;
public class cla1 {
public static int jour;
public static int mois;
public static int anne;
public cla1 (int j,int m,int an){
jour=j;
mois=m;
anne=an;
}
//-------------TOSTRING
public static String toString(int jour,int mois,int anne){
String s="",jj="",mm="",aa="";
jj=String.valueOf(jour);
mm=String.valueOf(mois);
aa= String.valueOf(anne);
s=jj+"/"+mm+"/"+aa;
return s;
}//tostring
//------BISSEX
public static boolean bissex(int anne){
boolean R=false;
if((anne%100==0)&&(anne%400!=0)){
R=true;
}
return R;
}
//-------NBJOURECOULES
public static int nbJourEcoules(int jour,int mois,int anne){
int ne = 0;
int nbe;
for(int i=1;i<mois;i++)
{
if(i%2==0){
if(i==2) {
if(bissex(anne)==true) ne=ne+29;
else ne=ne+28;
}
else ne=ne+30;
}
else ne=ne+31;
}
nbe=ne+jour;
return nbe;
}
//-----NBJOURRESTANT
public static int nbJourRestant(int jour,int mois,int anne){
int nr = 0;
if(bissex(anne)==true) nr=366-nbJourEcoules(jour,mois,anne);
else nr=365-nbJourEcoules(jour,mois,anne);
int nbr=nr+jour;
return nbr;
}
//----LIRE
public static int lire() throws IOException{
BufferedReader a = new BufferedReader(new InputStreamReader(System.in));
String arg = a.readLine();
int a1=Integer.parseInt(arg);
return a1;
}
//-------MAIN
public static void main(String[] args) throws IOException{
System.out.println("Entrez jour");
int day=lire();
System.out.println("Entrez mois");
int month=lire();
System.out.println("Entrez anne");
int year=lire();
//----affichage
System.out.println("==> "+toString(day,month,year));
System.out.println("Bissextile "+year+" : "+bissex(year));
System.out.println("-Nombre de jour ecoules : "+nbJourEcoules(day,month,year));
System.out.println("-Nombre de jour restants : "+nbJourRestant(day,month,year));
}//main
}
class date2
public class datte extends date {
public datte(date d1,date d2){
super(jour,mois,anne);
}
public static long nje(date n1,date n2){
int n = 0;
long nfin=0;
int an1=(n1.anne),an2=(n2.anne);
for(int i = an1;i<an2;i++){
if(bissex(i)==false) n=n+366;
else n=n+365;
}
int R1=nbJourRestant(n1.jour,n1.mois,n1.anne);
int R2=nbJourEcoules(n2.jour,n2.mois,n2.anne);
nfin=n+R1+R2;
return nfin;
}
public static void main(String[] args){
date d1=new date(1,1,190);
date d2=new date(1,1,2000);
System.out.println(" -Nombre de jours ecoules entre : "+nje(d1,d2));
}
}
2 réponses
Salut,
Classe Cla1 (préférable à cla1 pour respecter les conventions de nommage des noms de classe):
1) La formule du calcul d'une année bissextile est fausse.
Utiliser celle-ci:
2) Nombre de jours restants.
Tu calcules correctement ce nombre, mais tu ajoutes jour à nr dans nbr et tu retournes nbr, donc le nombre total de jours de l'année (soit 365 ou 366).
Il suffit de retourner le nombre de jours restants (nr)
Modifier:
Cordialement,
Dan
Classe Cla1 (préférable à cla1 pour respecter les conventions de nommage des noms de classe):
1) La formule du calcul d'une année bissextile est fausse.
Utiliser celle-ci:
if (anne % 400 == 0 || anne % 4 == 0 && anne % 100 != 0)
R=true;
2) Nombre de jours restants.
Tu calcules correctement ce nombre, mais tu ajoutes jour à nr dans nbr et tu retournes nbr, donc le nombre total de jours de l'année (soit 365 ou 366).
Il suffit de retourner le nombre de jours restants (nr)
Modifier:
//-----NBJOURRESTANT
public static int nbJourRestant(int jour,int mois,int anne){
int nr = 0;
if(bissex(anne)==true) nr=366-nbJourEcoules(jour,mois,anne);
else nr=365-nbJourEcoules(jour,mois,anne);
//int nbr=nr+jour; <<<< supprimer
//return nbr; <<<< supprimer
return nr; // remplacer nbr par nr
}
Cordialement,
Dan