Petit programme en JAVA

Fermé
amir121 Messages postés 3 Date d'inscription vendredi 12 décembre 2008 Statut Membre Dernière intervention 1 décembre 2010 - 1 déc. 2010 à 21:55
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 1 déc. 2010 à 23:03
slt,

SVP, aidez-moi à exécuter cet programme :)
.................................................................................................................
package date1;

public class Main {

public class Date
{
private int jj,mm,aaaa;
private Date(int jj,int mm,int aaaa)
{
this.jj=jj;
this.mm=mm;
this.aaaa=aaaa;
}
}
void nbr_jrs(Date t)
{
int m=t.mm;
switch(m)
{
case 1:System.out.println("nbr_jrs = 31");break;
case 2:System.out.println("nbr_jrs = 28");break;
case 3:System.out.println("nbr_jrs = 31");break;
case 4:System.out.println("nbr_jrs = 30");break;
case 5:System.out.println("nbr_jrs = 31");break;
case 6:System.out.println("nbr_jrs = 30");break;
case 7:System.out.println("nbr_jrs = 31");break;
case 8:System.out.println("nbr_jrs = 31");break;
case 9:System.out.println("nbr_jrs = 30");break;
case 10:System.out.println("nbr_jrs = 31");break;
case 11:System.out.println("nbr_jrs = 30");break;
case 12:System.out.println("nbr_jrs = 31");break;
}
}
int date_v(Date t)
{
int j=t.jj,m=t.mm,a=t.aaaa;
if(j<1 || j>31)
return 0;
else if(m<1 || m>12)
return 0;
else if(a<1)
return 0;
else
return 1;
}
void date_d(Date t)
{
int j=t.jj,m=t.mm,a=t.aaaa;
if(j==31 || j==30 || j==28)
{
j=1;
m++;
}
if(m>=12)
{
m=1;
a++;
}
System.out.println("Demain est: "+j+"/"+m+"/"+a);
}
public class Test_Date
{
public void main(String[] args)
{
Date t = null;
t.jj=Integer.parseInt(args[0]);
t.mm=Integer.parseInt(args[1]);
t.aaaa=Integer.parseInt(args[2]);
System.out.println("La Date: "+t.jj+"/"+t.mm+"/"+t.aaaa);
int k=date_v(t);
if(k==1)
{
nbr_jrs(t);
date_d(t);
}
else
System.out.println("ERREUR!!");
}
}
}
.................................................................................................................
run:
java.lang.NoSuchMethodError: main
Exception in thread "main" Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

!!!!!!!
Qu'est ce que je vais faire ? :)
Aidez-moi svp
A voir également:

1 réponse

KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
1 déc. 2010 à 23:03
Tu ne peux avoir qu'une classe publique par fichier (qui doit porter le nom de cette classe).

De plus tu ne peux pas les imbriquer. Donc enlève public class Main { et garde seulement public class Date { .
Remarque il te faudra supprimer l'accolade fermante après ton constructeur Date.

Ensuite soit tu places ta classe Test_Date dans un autre fichier soit (et c'est plus logique), tu mets ta méthode main dans la classe Test.
Remarque, elle doit être static pour pouvoir être appellée à l'éxecution.

Ensuite dans ta classe main, tu ne devrais pas utiliser les méthodes privées. En particulier passe ton constructeur public, et utilise le pour initialiser ton objet t, car t=null n'est pas une initialisation. Et puis sinon ça ne sert à rien de définir un constructeur !!!

Et enfin, une méthode ne s'appelle pas en passant l'objet en paramètre mais en mettant un point entre l'objet et la méthode. Par exemple int k=t.date_v() plutôt que int k=date_v(t)
Si vraiment tes méthodes ne s'appliquent à aucun objet (ce qui ne devrait pas être le cas ici) il faudrait que ces méthodes soient static ! De plus le t passé en paramètre (dans ta version) ne pourra pas être modifié seul l'objet peut être modifié !

Bref, lis et relis autant que nécessaire les concepts d'objets, de méthodes, et de classes en conception objet en général, et en Java en particulier. Porte en particulier attention aux différents mots-clé private, protected, private et "friendly"...
0