Partage
  • Partager sur Facebook
  • Partager sur Twitter

JAVA:probleme avec creation d'un carnet d'adresse

Sujet résolu
    27 octobre 2014 à 1:36:04

    Salut désole du dérangement mais je me suis coince dans un programme, bon mon programme doit crée un carnet d'adresse c qui fait ajoute des personne , les affiches et savoir si une personne est dans la liste, mais la j'ai pu crée  l'ajout qui m'affiche une erreur d’exécution que j'ai pas pu savoir comment la résoudre, et pour l'affichage j'ai pas su comment prendre les données du tableau qui est dans une autre classe et les affiches :/ Merci pour votre aide :D
    voila mon code:

    classe Adresse

    package tp2.pkg2;
    
    
    public class Adresse 
    {
        private int num;
        private String rue,ville;
        public Adresse(int num, String rue,String ville)
        {
            this.num=num;
            this.ville=ville;
            this.rue=rue;
        }
    
       
        public int getNum()
        {
            return this.num;
        }
        public String getRue()
        {
            return this.rue;
        }
         
        public String  getVille()
        {
                 return this.ville;   
        }
        @Override
        public String toString()
        {
            return "Adresse :"+num+","+rue+","+ville;
        }
        
    }
    

    classe Personne

    package tp2.pkg2;
    
    
    public class Personne 
    {
        private String nom;
        private Adresse adr;
        public Personne(String nom)
        {
            this.nom=nom;
        }   
        public void setNom(String nom)
        {
            this.nom=nom;
        }
        
        public String getNom()
        {
            return this.nom;
        }
        public Adresse getAdresse()
        {
            return this.adr;
        }
        public void setAdresse(Adresse adr)
        {
            this.adr=adr;
        }
        
        
        
        
        @Override
        public String toString()
        {
            return "nom: "+nom+","+adr.toString();
        }
                
        
    }
    

    classe Carnet 

    package tp2.pkg2;
    
    
    public class Carnet
    {
        private  Personne[] cont;
        private int dimension;
        private int derPosition=-1;
        public Carnet(int dimension)
        {
            this.dimension=dimension;
            
        }    
        public int getDimension()
        {
            return this.dimension;
        }     
        public int getDerPosition()
        {
            return this.derPosition;
        }
       
        
        public void ajoutPersonne(String nom,Adresse adr)
        {
            cont=new Personne[this.dimension];
            for(int i=0;i<cont.length;i++)
            {
                cont[i].setNom(nom);
                cont[i].setAdresse(adr);
                this.derPosition++;
                        
            }
        }
    
        
           
        }
           
              
           
            
        
        
        
       
       
        
    
    

    main:

    package tp2.pkg2;
    import java.util.*;
    
    public class TP22
    {
    
        public static void main(String[] args)
        {
         
       
           Scanner clavier= new Scanner(System.in);
           System.out.println("entrer le nom ");
           String no = clavier.nextLine();
           System.out.println("entrer num");
           int nu= clavier.nextInt();
           System.out.println("entrer ville");
           String v =clavier.nextLine();
           System.out.println("entrer rue");
           String r=clavier.nextLine();
           Adresse a=new Adresse(nu,r,v);
           Carnet c=new Carnet(1);
           c.ajoutPersonne(no, a);
           /*for(int i=0;i<c.getDerPosition();i++)
           {
             System.out.println("carnet d'adresse"+c.);
           }*/
          
          
           
        }
       
    }
    




    ps:je travail sur NetBeans8 et pour les variables des classes ils sont déjà défini dans mon TP il faut pas que je les changes

    -
    Edité par BASSAMn 27 octobre 2014 à 1:39:13

    • Partager sur Facebook
    • Partager sur Twitter
      27 octobre 2014 à 9:14:28

      Bonjour,

      Le problème vient de la classe Carnet : la méthode ajoutPersonne ne doit pas atteindre le résultat souhaité :

      public void ajoutPersonne(String nom,Adresse adr)
      {
      cont=new Personne[this.dimension];
      -> ici tu crées un nouveau tableau à chaque ajout : il faudrait ne le créer qu'une fois
      for(int i=0;i<cont.length;i++)
      {
      cont[i].setNom(nom);
      cont[i].setAdresse(adr);
      this.derPosition++;
      -> ici tu essayes de setter le nom et l'adresse, mais tu n'as pas encore créé l'objet Personne qui est dans le tableau eu position i -> ton exception (NullPointerException probablement)                    
      }
      }
      Vu que ta dimension est fixe, tu devrais initialiser ton tableau dans ton constructeur avec ta commande cont=new Personne[this.dimension];
      et dans la méthode d'ajout, tu vas instancier l'élément suivant. Au début derPosition vaut -1, donc à l'ajout, il faut l'incrémenter puis instancier dans ton tableau :
      public void ajoutPersonne(String nom,Adresse adr)
      {
      this.derPosition++;
                                  cont[derPosition] = new Personne(nom);
      cont[derPosition].setAdresse(adr);
                }
      Bonne journée
      • Partager sur Facebook
      • Partager sur Twitter
        28 octobre 2014 à 1:35:20

        Salut AdricoM Merci de t'as réponse j'ai pu résoudre le problème de l'ajout (j'ai plus d'erreur exclusion)  mais la j'ai un autre problème dans  ma classe main quand je veux stocker mes variable ville et rue depuis clavier il me met pas "entrer ville " et j'entre en clavier et "entrer rue" non il me les donnes toutes les deux directement et  faut que je tape au clavier , et quand j'ai teste les variable stocker par cette dernière j'ai trouve que celle de ville reçoit c que j'ai entre mais rue reçoit deux fois c que j'ai entre (sachant que c donne même valeur des deux répété) , et le deuxième problème c'est comment je peux parcourir mon tableau de personne(dans carnet)pour les afficher je sais pas comment faire :/ pas trouve :/ Merci pour votre réponse :D

        • Partager sur Facebook
        • Partager sur Twitter
          29 octobre 2014 à 18:52:20

          Salut BASSAMn,

          alors, déjà pour ton deuxième problème : tu peux faire un méthode toString() comme ça :

          @Override
          public String toString() {
              String res = "dimension: " + dimension + ", personnes: ";
              for (int i = 0; i <= derPosition; i++) {
                  res += "\n" + i + " : " + cont[i].toString();
              }
              return res;
          }

          Pour ton premier problème, j'ai trouvé ici un paragraphe qui va t'aider :

          "Une précision s'impose, toutefois : la méthode nextLine() récupère le contenu de toute la ligne saisie et replace la « tête de lecture » au début d'une autre ligne. Par contre, si vous avez invoqué une méthode comme nextInt(), nextDouble() et que vous invoquez directement après la méthode nextLine(), celle-ci ne vous invitera pas à saisir une chaîne de caractères : elle videra la ligne commencée par les autres instructions. En effet, celles-ci ne repositionnent pas la tête de lecture, l'instruction nextLine() le fait à leur place."

          Du coup tu dois ajouter une ligne de code :

          int nu= clavier.nextInt();
          System.out.println("entrer ville");

          deviendra :

          int nu= clavier.nextInt();
          clavier.nextLine();
          System.out.println("entrer ville");
          • Partager sur Facebook
          • Partager sur Twitter
            30 octobre 2014 à 4:07:46

            Salut AdricoM,

            Merci pour tes réponses tu ma étais vraiment d'une grande aide Merci  :D

            • Partager sur Facebook
            • Partager sur Twitter

            JAVA:probleme avec creation d'un carnet d'adresse

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown