L'error ??

ibrahim -  
 Utilisateur anonyme -
Bonjour,

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

Utilisateur anonyme
 
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:

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
1
loi219 Messages postés 665 Statut Membre 104
 
Il te renvoit quoi comme erreur?
0