Prob en java

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. Modérateur
    Salut

    ta question n'est pas très claire

    tu peux développer ? quitte à mettre ton code

    merci
    1. 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());}

      }

      }
      1. Modérateur
        Salut

        tes classes héritent ou sont des instanciations ?
    2. Modérateur
      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..

      1. 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
        1. Modérateur
          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
          1. slt
            merci encore une fois
            mais j ai instancie toute les classes
            merci encore
            1. Modérateur
              ok ..

              peux tu m'expliquer brièvement ce que ton programme est sensé faire, svp ?
              1. 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
                1. 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
                  1. Modérateur
                    ok

                    tes classes héritent d'une seule classe

                    mais as-tu modifié quelque choses à ces classes par rapport à la classe mère ?
                    1. Modérateur
                      si je permettre un avis ...

                      le fait d'utiliser "do" en java n'est pas recommendé du tout
                      1. 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
                        1. Modérateur
                          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.