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. 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
    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. 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. 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. 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. mais quelle est l'utilité de préfixer Date par le signe "_" ? (_Date)
              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. merci chuka;
                  oui le problème est un zéro!
                  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. oui c'est ça le problème.
                      alors, comment puis-je corriger?
                      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. 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. 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. 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. 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