Prob en java

Fermé
jiha - 13 juin 2008 à 17:20
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 - 16 juin 2008 à 07:48
slt,
j ai 1 probleme avec les vecteurs en java
j ai fait un prog ou 2 classes heritent d 1 seule j ai fait les deux classes mais lorsque j veux qfficher le vecteur
la premiere s affiche et la deuxieme nin j sais pas koi faire
merci d avance
A voir également:

14 réponses

choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 juin 2008 à 17:24
Salut

ta question n'est pas très claire

tu peux développer ? quitte à mettre ton code

merci
0
slt,
j ai 1 probleme avec les vecteurs en java
j ai fait un prog ou 2 classes heritent d 1 seule j ai entrer fait les deux classes mais lorsque j veux afficher le vecteur
la premiere s affiche et la deuxieme non j sais pas koi faire
merci d avance
pr plus d infos voici mon prog
import java.io.*;
import java.util.*;
public class Principal {
static BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) {
try
{
char reponse='n',choix='n';
PErsonne_physique p= new PErsonne_physique();
Personne_morale m=new Personne_morale();
Vector v= new Vector();
Client c= new Client();
Object o= new Object();
String st;

do
{
System.out.println("\t 1---> entrer un client physique ");
System.out.println("\t 2---> entrer un client morale ");
System.out.println("\t 3---> afficher les clients entres ");
choix=buf.readLine().charAt(0);
switch(choix)
{
case '1' : char repons= 'n';
do
{
p= new PErsonne_physique();
p.Saisir();
v.add(p);
System.out.println("voulez vous saisr un aitre client physique");
repons=buf.readLine().charAt(0);
}while(repons=='o'||repons=='O');
break;
case'2' : char repon= 'n';
do
{
m= new Personne_morale();
m.Saisir();
v.add(m);
System.out.println("voulez vous saisir un autre client morale?");
repon=buf.readLine().charAt(0);
}while(repon=='o'||repon=='O');
break;
case'3' : for ( Enumeration e=v.elements();e.hasMoreElements();)
{
o=e.nextElement();
p=(PErsonne_physique)o;
if(p.nomclasse.compareToIgnoreCase("personne physique")==0)
{ st=p.ToString();
System.out.println(st);}
else
{ m=(Personne_morale)o;
st=m.ToString();
System.out.println(st);}
}
break;

default :System.out.println("Cas non traite");
}



System.out.println("\tvoulez vous revoir le menu?");
reponse=buf.readLine().charAt(0);
}while(reponse=='o'||reponse=='O');





}catch(Exception e){System.out.println(e.getMessage());}

}

}
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
13 juin 2008 à 17:32
Salut

tes classes héritent ou sont des instanciations ?
0
1tsdi Messages postés 4 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 14 juin 2008
14 juin 2008 à 00:16
slt
merci pour ton attention
les classes heritent
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
14 juin 2008 à 12:52
Salut

essaye de déclarer tes attributs comme attribut de classe

je veux dire les déclarer en dehors de ta méthode main.

ensuite, l'instanciation des ces objets attributs (dont fait partie le vector)peut être faite dans le constructeur de la classe;

ce n'est pas toujours très bon de tout faire dans la méthode main..

0

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

Posez votre question
1tsdi Messages postés 4 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 14 juin 2008
14 juin 2008 à 14:49
slt
merci pour ta reponse mais lorsque j ai fait c que tu m as demande j n ai pu saisir qu une seul fois puis le programme s est bloque en affichant null
et encore merci
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
14 juin 2008 à 15:39
salut

il est clair que si tu veux travailler comme celà, la structure du programme doit être revue

ce qui s'est passé, à mon avis, c'est q'une seule classe à été instanciée
0
1tsdi Messages postés 4 Date d'inscription vendredi 13 juin 2008 Statut Membre Dernière intervention 14 juin 2008
14 juin 2008 à 15:49
slt
merci encore une fois
mais j ai instancie toute les classes
merci encore
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
14 juin 2008 à 18:50
ok ..

peux tu m'expliquer brièvement ce que ton programme est sensé faire, svp ?
0
slt
mon programme fait entrer des objets dans 1 vecteur et les lis
autrement dis il fait entrer et sortir des objets d un vecteur
sauf que les objets utilises sont ceux de 2 classes qui heritent d 1 seule
le probleme c est que lorsque j execute le programme la premiere calsse s affiche alors que la 2 eme bloque le prog en affichant le nom de la 2 eme classe
merci pour votre interret
0
slt
je sais que mon probleme est trop banale mais
j sais pas comment faire pour le resoudre et j ai jamais travaille avec la metode que tu m avais propose ce qui fait j n sais pas ce que j dois changer pour qu il marche
j vais devenir dingue
merci pour ton attention
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
15 juin 2008 à 20:57
ok

tes classes héritent d'une seule classe

mais as-tu modifié quelque choses à ces classes par rapport à la classe mère ?
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
15 juin 2008 à 21:03
si je permettre un avis ...

le fait d'utiliser "do" en java n'est pas recommendé du tout
0
slt
merci pour ton interret
j n sais pas ce que tu veux dire par si j ai chage quelque chose par rapport a la classe mere ni son rapport avec le vecteur
entout cas voisi le cod de la classe mere et des 2 classes filles
voici la classe mere

import java.io.*;
public class Client {
/********************Declaration general************************/
static BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
protected String nom;
protected String prenom;
protected int code;


/************************Constructeur********************************/
public Client()
{
nom="espoire";
prenom="espoire";
code=0;
}
public void Saisir()
{
try {
System.out.println("entrer le nom");
nom=buf.readLine();
System.out.println("entrer le prenom");
prenom=buf.readLine();
System.out.println("entrer le code");
code=Integer.parseInt(buf.readLine());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
/*****************************Afficher*************************/
public String ToString()
{
return("\n le nom est :"+nom+"\n le penom est :"+prenom+"\n le code est :"+code+"\n\t-----------------------------");
}
}
la 1 ere classe fille

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class PErsonne_physique extends Client{

/*************************Declaration globale*********************/
static BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
private String adresse;
private String tel;
public String nomclasse="Personne physique";
/**************************Constructeur******************/
public PErsonne_physique()
{ super();
adresse="nul";
tel="nul"; }
/**************************Saisir***********************/
public void Saisir()
{
super.Saisir();

try {
System.out.println("entrer l adresse ");
adresse=buf.readLine();
System.out.println("entrer le numero de telephone ");
tel=buf.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/********************************Afficher***************************/
public String ToString()
{
String st;
st=super.ToString();
return(st+"\nl adresse :"+adresse+"\n le numero de telephone est :"+tel+"\n\t...............");

}
}
voici la 2eme classe fille qui cree le prob

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Personne_morale extends Client{
/********Declaration Globale**************/
static BufferedReader buf= new BufferedReader(new InputStreamReader(System.in));
private String cin;
private String raison;
public String nomclasse="Personne morale";
/********************Constructeur**********************/
public Personne_morale()
{
super();
cin="nul";
raison="nul";
}
/*********************************Saisir************************/

public void Saisir()
{
super.Saisir();

try {
System.out.println("entrer le CIN ");
cin=buf.readLine();
System.out.println("entrer la raison sociale");
raison=buf.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*****************************Afficher**************************/
public String ToString()
{
String st;
st=super.ToString();
return(st+"\nle CIN :"+cin+"\n la raison sociale :"+raison+"\n\t°°°°°°°°°°°°°");
}


}

merci une autre fois
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
16 juin 2008 à 07:48
Bonjour ..

j'ai déjà ma réponse au niveau de la méthode Saisir, tu effectues bien un override au niveau des tes sous-classe.

Maintenant, j'ai remarqué dans ta classe Main que tu passais par un objet o pour "caster" les objets venant du vecteur.
ça peut poser des problèmes, en sachant qure tu n'es pas certain de ce que tu vas récuper. Je m'explique.
Tu vas récupérer un objet de type Client, ça c'est certain. Par contre es-tu certain que tu récupère un personne morale ou physique ??

Il existe une méthode de la classe Object qui te permet de tester si tu traites la bonne classe. C'est la méthode "equals"

public boolean equals(Object obj)

donc, je pense que dans ce bout de code

case'3' : for ( Enumeration e=v.elements();e.hasMoreElements();)
{
o=e.nextElement();
p=(PErsonne_physique)o;
if(p.nomclasse.compareToIgnoreCase("personne physique")==0)
{ st=p.ToString();
System.out.println(st);}
else
{ m=(Personne_morale)o;
st=m.ToString();
System.out.println(st);}
}
break;

default :System.out.println("Cas non traite");
}


tu devrait tester avant tout le type de classe qui ressort du vecteur avec la méthode equals.

Autre chose, pour entrer un objet dans ton vecteur, utlise la méthode du vecteur "addElement" plutot que "add".

http://java.sun.com/j2se/1.3/docs/api/java/util/Vector.html


tiens moi au courant.


0