Probleme dans java

Bonjour,
bonsoir;
Je viens de faire le code d'un programme java qui à pour objectif de modéliser un objet Personne caractérisé par son: nom, prénom, sexe, date de naissance et adresse.
on me demande de faire une classe date qui permet de construire une date et de l'afficher sous la forme jj/mm/aaaa.
J'ai réalisé cette classe date, comme suit:

public class Date{
int j,m,a;

public Date(int j,int m, int a){ //constructeur de la classe date
this.j=j;
this.m=m;
this.a=a;
}

//debut de la methode affichage date
void affichage (){
if ((j>9) && (m>9)){
System.out.println(j+"/"+m+"/"+a);
}
else
if ((j<=9)&&(m<=9)){
System.out.println("0"+j+"/"+"0"+m+"/"+a);
}
else
if (m<=9){
System.out.println(j+"/"+"0"+m+"/"+a);
}else{
System.out.println("0"+j+"/"+m+"/"+a);
}

}
//fin de la methode affichage date

}

Et j'ai aussi réalisé la classe personne, comme suit:

public class Personne{
String nom,prenom,sexe,adresse;
Date d;

//constructeur de classe personne
public Personne(String nom,String prenom,String sexe,String adresse, int j,int m,int a){
this.nom=nom;
this.prenom=prenom;
this.sexe=sexe;
this.adresse=adresse;
this.d.j=j;
this.d.m=m;
this.d.a=a;
}
//fin modelisation du constructeur

void infopersonne(){
System.out.println(nom);
System.out.println(prenom);
System.out.println(sexe);
System.out.println(adresse);
d.affichage();
}

}

Et j'ai réalisé une classe de test:

public class Test{
public static void main (String [] args){
Personne a1=new Personne("Jackson","Micheal","masculin","Canada",23,08,1988);
a1.infopersonne();

}
}

Mais ça ne fonctionne pas, avec un message d'erreur:
integer number too large: 08

merci de bien me rectifier les erreurs que j'ai commis.
Cordialement .
Configuration: Windows XP
Firefox 3.0.16

15 réponses

  1. Tu n'as pas instancié ton objet Date avant de l'initialiser :

    public Personne(String nom,String prenom,String sexe,String adresse, int j,int m,int a)
    {
    this.nom=nom;
    this.prenom=prenom;
    this.sexe=sexe;
    this.adresse=adresse;
    d = new Date();
    this.d.j=j;
    this.d.m=m;
    this.d.a=a;
    }
    0
    1. la même erreur, lors que je compile la classe test:
      integer number too large: 08
      j'ai vraiment besoin de votre aide.
      0
      1. Fais le test suivant : limite ta méthode affichage() à cela :

        //debut de la methode affichage date
        void affichage()
        {
        System.out.println("0"+j+"/"+"0"+m+"/"+a);
        }

        !ah je viens de voir que tu as mis un espace entre affichage et (). Il faut que tu l'enlèves.

        A tout à l'heure.
        0
        1. je pense que le problème se situe dans le constructeur de la classe Personne, au niveau de l'intégration de l'objet Date d.
          0
          1. Eh bien enleve l'attribut Date et toutes les références sur cette classe.

            Et regarde ce que cela donne. Si ça s'execute alors tu as raison ;-)
            0
            1. oui c'est ça le problème.
              alors, comment puis-je corriger?
              0
              1. Salut,
                essaye cela:
                class _Date{
                int j,m,a;
                
                public _Date(int j,int m, int a){ //constructeur de la classe date
                this.j=j;
                this.m=m;
                this.a=a;
                }
                
                
                //debut de la methode affichage date
                void affichage (){
                if ((j>9) && (m>9)){
                System.out.println(j+"/"+m+"/"+a);
                }
                else
                if ((j<=9)&&(m<=9)){
                System.out.println("0"+j+"/"+"0"+m+"/"+a);
                }
                else
                if (m<=9){
                System.out.println(j+"/"+"0"+m+"/"+a);
                }else{
                System.out.println("0"+j+"/"+m+"/"+a);
                }
                
                
                }
                //fin de la methode affichage date
                
                
                }
                
                
                
                class Personne{
                String nom,prenom,sexe,adresse;
                _Date d;
                
                //constructeur de classe personne
                public Personne(String nom,String prenom,String sexe,String adresse, _Date d){
                this.nom=nom;
                this.prenom=prenom;
                this.sexe=sexe;
                this.adresse=adresse;
                this.d=d;
                }
                //fin modelisation du constructeur
                
                void infopersonne(){
                System.out.println(nom);
                System.out.println(prenom);
                System.out.println(sexe);
                System.out.println(adresse);
                d.affichage();
                }
                
                
                }
                
                
                public class Main{
                public static void main (String [] args){
                Personne a1=new Personne("Jackson","Micheal","masculin","Canada",new _Date(23,8,1988));
                a1.infopersonne();
                
                }
                }
                

                le prb vient du 08..il suffit de mettre 8
                @+
                1
                1. merci chuka;
                  oui le problème est un zéro!
                  0
                  1. Fichtre !
                    Bravo Chuka ! J'aurai cru que Java aurait interprêté le 08 automatiquement comme un 8 car le 0 n'est pas significatif !
                    0
                    1. mais quelle est l'utilité de préfixer Date par le signe "_" ? (_Date)
                      0
                      1. Aucun si ce n'est d'éviter que ta classe perso ait le même nom que la classe déjà implémentée dans java.
                        Que Chuka ait renommé ta classe Date en _Date ou en MaDate, cela revenait au même.
                        0
                        1. Fichtre !
                          J'aurai cru que Java aurait interprêté le 08 automatiquement comme un 8 car le 0 n'est pas significatif !

                          Ben moi aussi.....C'est pour cela que je suis parti dans un délire _Date...me suis dis peut-être qu'il y a une class Date qui existe déjà et qui fait chier.....
                          Comme quoi des fois on se prend la tete pour pas grand chose!!;)
                          @+
                          0
                          1. Bonjour,
                            Oui vraiment il y on a plusieurs classes qui facilite la tache j'ai un exemple qui affiche trois formats
                            différentes de la date :

                            import java.util.*;
                            import java.text.*;

                            public class TestDate {

                            static DateFormat df= DateFormat.getDateInstance(DateFormat.MEDIUM,Locale.ENGLISH);
                            static DateFormat dg= DateFormat.getDateInstance(DateFormat.FULL,Locale.FRANCE);
                            static SimpleDateFormat sdt=new SimpleDateFormat("dd/MM/yyyy");

                            public static void main (String[]args) throws ParseException{
                            Scanner s=new Scanner(System.in);

                            Date d =sdt.parse("19/01/1987");
                            System.out.println(df.format(d));
                            System.out.println(dg.format(new Date()));
                            System.out.println(sdt.format(new Date()));
                            Date d1=sdt.parse(s.next());
                            System.out.println(df.format(d1));
                            }
                            }

                            ******la resultat **********
                            Jan 19, 1987 *
                            mardi 29 décembre 2009 *
                            29/12/2009 *
                            ************************
                            Alors tu vas utilise la troisième forme qui répond a votre question.
                            Bonne journée.
                            @+
                            0
                            1. ça marche pas avec cette classe: il y a une erreur lors de la compilation.L'erreur est:
                              illegal character: \173
                              merci de bien vouloir m'aider à résoudre ce problème.
                              Cordialement.
                              0
                              1. Bonsoir,
                                Pour moi le code ca marche c vraiment bizarre .

                                Cette classe je l'utilise pour avoir une date complet avec l'heure (en français):
                                ca marche pour moi 100%.
                                /////////////////////////////////////
                                import java.text.*;
                                import java.util.*;

                                public class DateFR {

                                public static String getFrenchDate()
                                {
                                DateFormat dg= DateFormat.getDateInstance(DateFormat.FULL,Locale.FRANCE);
                                Date d = new Date(System.currentTimeMillis());
                                return dg.format(new Date())+" "+d.getHours()+"h"+d.getMinutes()+"mn"+d.getSeconds()+"s";
                                }

                                public static void main (String[]args)throws ParseException{
                                System.out.println(getFrenchDate());
                                //System.out.println(dg.format(new Date()));
                                }
                                }
                                /////////////////////////////////////////////

                                @+;
                                0