Probleme dans java

Sleem_ Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   -  
Aminjer Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -
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 .
A voir également:

15 réponses

chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
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
BadGuitarist Messages postés 367 Date d'inscription   Statut Membre Dernière intervention   27
 
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
Sleem_ Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
la même erreur, lors que je compile la classe test:
integer number too large: 08
j'ai vraiment besoin de votre aide.
0
BadGuitarist Messages postés 367 Date d'inscription   Statut Membre Dernière intervention   27
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sleem_ Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
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
BadGuitarist Messages postés 367 Date d'inscription   Statut Membre Dernière intervention   27
 
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
Sleem_ Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
oui c'est ça le problème.
alors, comment puis-je corriger?
0
Sleem_ Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
merci chuka;
oui le problème est un zéro!
0
BadGuitarist Messages postés 367 Date d'inscription   Statut Membre Dernière intervention   27
 
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
Sleem_ Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
mais quelle est l'utilité de préfixer Date par le signe "_" ? (_Date)
0
BadGuitarist Messages postés 367 Date d'inscription   Statut Membre Dernière intervention   27
 
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
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
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
Aminjer Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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
Sleem_ Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
ç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
Aminjer Messages postés 47 Date d'inscription   Statut Membre Dernière intervention  
 
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