Prob en java

jiha -  
choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   -
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
Configuration: Windows XP
Internet Explorer 6.0

14 réponses

  1. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    Salut

    ta question n'est pas très claire

    tu peux développer ? quitte à mettre ton code

    merci
    0
  2. jiha
     
    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
    1. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
       
      Salut

      tes classes héritent ou sont des instanciations ?
      0
  3. 1tsdi Messages postés 4 Statut Membre
     
    slt
    merci pour ton attention
    les classes heritent
    0
  4. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. 1tsdi Messages postés 4 Statut Membre
     
    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
  7. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    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
  8. 1tsdi Messages postés 4 Statut Membre
     
    slt
    merci encore une fois
    mais j ai instancie toute les classes
    merci encore
    0
  9. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    ok ..

    peux tu m'expliquer brièvement ce que ton programme est sensé faire, svp ?
    0
  10. 1tsdi
     
    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
  11. 1tsdi
     
    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
  12. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    ok

    tes classes héritent d'une seule classe

    mais as-tu modifié quelque choses à ces classes par rapport à la classe mère ?
    0
  13. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    si je permettre un avis ...

    le fait d'utiliser "do" en java n'est pas recommendé du tout
    0
  14. 1tsdi
     
    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
  15. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    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