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. 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. 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. 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