IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

les liste chainnéés


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut les liste chainnéés
    salut a tous voila mon probleme
    quand j' ajouter des élément pour ma liste lors de la ffichage il me dit qui a rien
    voila le code

    class livre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class livre {
        protected String auteur;
        protected String titre;
        protected String edition;
        protected String categorie;
        protected String[] categori={"sciene","sciencefiction","drama","culturelle","policier","roman"};
        public livre(String titre,String auteur,String edition,int i)
        {
            this.titre=titre;
            this.auteur=auteur;
            this.edition=edition;
            categorie=categori[i];
        }
        public livre(){
            this.titre="";
            this.auteur="";
            this.edition="";        
        }
     
     
    }
    class element
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class element {
        protected livre livre;
        protected element suivant;
        public element()
        {
            livre=null;
            suivant=null;
        }
        public element(livre livre,element a)
        {
            this.livre=livre;
            suivant=a;
        }    
        public element Getsuivnat()
        {
        return suivant;    
        }
        public  void modifelement(String  titre,String auteur,String  edition,int i)
        {
           this.livre.titre=titre;
           this.livre.auteur=auteur;
           this.livre.edition=edition;
           this.livre.categorie=livre.categori[i];           
     
        }
        public void Setsuivant(element k)
        {
            this.suivant=k;
        }
     
    }
    class catallogue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    public class catalogue {
     
        public element tete;
     
        public catalogue()
        {
     
            this.tete=new element(null,null);
        }
        public void Ajouteralarriere(livre l,element pos)
        {       
           element x=pos.suivant;   
     
            pos.Setsuivant(new element(l,x));
     
     
        }
        public boolean  Modifier(element a,String  titre,String auteur,String  edition,int i)
        {
            element ptr=tete;
     
            while(ptr.suivant!=null)
            {
                if(ptr.suivant==a)
                {
                    a.modifelement(titre, auteur, edition, i);
                            return true;
                }
            }
     
            return false;
       }
       public element localiserparnom(String nom)
        {
           element ptr=tete;
       while(ptr.suivant!=null)
       {  
     
           if(ptr.livre.titre == nom)
               return  ptr;
       }
           return null;
       }
     /* public element supprimer(element a,String titreasuppr) 
       {   
           
           
       }*/
       public void afficher()
       {
           element pta=this.tete;
           while(pta.suivant!=null)
                                {
     
                                   System.out.print("["+pta.livre.titre +"\t"+pta.livre.auteur+"\t"+pta.livre.edition + "\t"+pta.livre.categorie +"]" );                                
     
                                    pta=pta.suivant;
                                }
       }
    class test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    public class Main {
    //version 2.0 en liste chainéé
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            int choix,sortir=0,choix2,categorie;                    
            Scanner input=new Scanner(System.in);     
            catalogue cata=new catalogue();                
            element test=new element();
           // test=cata.tete;//je sai il va donnez la refference mais la question  c'est esr ce que je modifier element tete va ce modifier?
            String auteur;
            String edition;
            String titre;        
            String nouveautitre;
            do{                               
                    System.out.println("--------------------MENU-------------------------");                
                    System.out.println("1-ajouter un nouveau livre dans catallogue (bza3te:d)");
                    System.out.println("2-supprimer un livre du catallogue (f3arti lina rassna:d)");
                    System.out.println("3-modifier les donnees du livre (wabzafe:d)");
                    System.out.println("4-classer votre catallogue (wa3ya9a hadi:d)");
                    System.out.println("5-afficher le catallogue (zwina hadi:d)");
                    System.out.println("6-pour sortir (ouuuuuuuufff hnitina:d)");          
                    choix = input.nextInt();
                    switch (choix) {                   
                        case 1:
                            {
                                System.out.println("entrez le titre du livre");
                                titre = input.next();
                                System.out.println("entrez le nom de l'auteur du livre");
                                auteur = input.next();
                                System.out.println("entrez l'edition du livre");
                                edition = input.next();
                                System.out.println("entrez la categorie du livre entre 0 a 5 ");
                                categorie = input.nextInt();                          
                                element ptr=cata.tete;
                                while(ptr.Getsuivnat()!=null)
                                {
                                    ptr=ptr.suivant;
                                }
     
                                cata.Ajouteralarriere(new livre(titre,auteur,edition,categorie),ptr);
                            }
                            break;
                      /*  case 2:
                            {
                                System.out.println("entrez le nom du livre que vous voulez supprimer");
                                String suppr = input.next();     
                                liste = cata.supprimer(liste, suppr);
                                
                            }
                            break;*/
                     /*   case 3:
                            {
                                System.out.println("entrez le titre du livre que vous voulez modifier");
                                titre = input.next();
                                System.out.println("entrez le titre du livre");
                                nouveautitre = input.next();
                                System.out.println("entrez le nom de l'auteur du livre");
                                auteur = input.next();
                                System.out.println("entrez l'edition du livre");
                                edition = input.next();
                                System.out.println("entrez la categorie du livre");
                                categorie = input.nextInt();
                                liste=cata.Modifier(liste, titre,nouveautitre , auteur, edition, categorie);
                                
                            }
                            break;*/
                        /*case 4:
                            {
                                System.out.println("-------------------menu du trier---------------------------------");
                                System.out.println("1-classer votre catallogue par titre");
                                System.out.println("2-classer votre catallogue par auteur");
                                System.out.println("3-classer votre catallogue par edition");
                                System.out.println("4-classer votre catallogue par categorie");
                                choix2 = input.nextInt();
                                switch (choix2) {
                                    case 1:
                                        {
                                            cata.ClasserTitre(liste);
                                        }
                                        break;
                                    case 2:
                                        {
                                            cata.ClasserparAuteur(liste);
                                        }
                                        break;
                                    case 3:
                                        {
                                            cata.ClasserparEdition(liste);
                                        }
                                        break;
                                    case 4:
                                        {
                                            cata.ClasserparCategorie(liste);
                                        }
                                        break;
                                        default:System.out.println("entrez s'il vou plait un nombre entre 1 et 7  (ou bla 3yaka) " );
                            break;
                                    
                                        
                                    }
                                    
                            }break;*/
                        case 5:
                            {
     
                                cata.afficher();
     
                            }
                            break;
                        case 6:
                            {
                                System.out.print("si vous ete vraiment sur de sortir tapez 6");
                                sortir = input.nextInt();
                            }
                            break;
                             default:System.out.println("entrez s'il vou plai un nombre entre 1 et 6  (ou bla 3yaka) " );
                            break;
                    }                
     
     
     
            }while(sortir !=6);
            // TODO code application logic here
        }
     
    }//@conception and creation naoufal el haddad
    et merci les amis pour votre d'aide
    ah voila l'erreur qui me donne a pres l'exuction


    Exception in thread "main" java.lang.NullPointerException
    at cataloguedelivreenlistechainees.catalogue.afficher(catalogue.java:66)
    at cataloguedelivreenlistechainees.test.main(Main.java:119)
    Java Result: 1

    et merci les amis pour tous

  2. #2
    Membre averti Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Points : 307
    Points
    307
    Par défaut
    Salut,
    J'ai pas lu tout le code que tu as donné mais si j'ai bien compris tu veux créer une liste chaînée à la la manière du C.
    Ben pourquoi tu veux réinventer la roue puisque tu as bon nombre de classes pour gérer et stocker les données:
    - ArrayList pour un tableau dynamique.
    - LinkedList pour les listes chaînées.
    - HashSet pour les tables de hachage.
    - HashMap pour les cartes
    - ..etc.
    "Un remboursement des programmes défectueux serait envisageable mais toute l'industrie du logiciel ferait faillite la première année." Andrew Tanenbaum.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    merci mon ami pour la réponse
    mai le problème que c'est ça c'est un tp a faire et je suis obligé de crée moi même cette de liste chainé merci mon ami
    a+

  4. #4
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Points : 318
    Points
    318
    Par défaut
    Salut,

    Il est possible que tu te prennes un nullpointer dans le cas où tu fais le choix 5 directement. En effet, dans ce cas, la méthode "afficher" sur catalogue fait un "ptr.suivant", or ptr a été affecté avec "tete", qui n'a pas été valorisé (il est mis à null dans le constructeur), d'où le nullpointer.

    Il y a peut-être d'autres cas

  5. #5
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    311
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 311
    Points : 318
    Points
    318
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while(!reponseSatisfaisante) {
      new Post(oldPost.copierColler());
    }

  7. #7
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Citation Envoyé par DevTeam_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while(!reponseSatisfaisante) {
      new Post(oldPost.copierColler());
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    int i = 0;
    while( ++i <= 100 )
    {
      System.out.println( "je ne dois pas double poster." );
    }
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 22
    Points : 11
    Points
    11
    Par défaut
    hhéhéhéhéhéhé
    3la bssala
    bnademe mataye yfhamache ou taye ytla7e ykhe 3la bnadme
    a+

Discussions similaires

  1. jai probleme dans les listes chainnes
    Par ChouAib0202 dans le forum Débuter
    Réponses: 3
    Dernier message: 20/02/2015, 11h24
  2. [langage] probleme avec les listes dans des listes
    Par pqmoltonel dans le forum Langage
    Réponses: 7
    Dernier message: 27/04/2004, 12h32
  3. Probleme liste chainne et recursif
    Par rippoz dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 05/02/2004, 16h52
  4. [LG]Les listes
    Par franck H dans le forum Langage
    Réponses: 2
    Dernier message: 16/01/2004, 15h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo