Partage
  • Partager sur Facebook
  • Partager sur Twitter

liste chaîner

amélioration

    24 mai 2011 à 19:13:34

    bonjours !

    voilà j'ai pu améliorer un peu mes données pour ce qui est des erreurs j'ai pu dépasser une et il me reste deux , voilà les nouvelles modification enfin mon code


    public class Element {
    
    	Fichier info;
    	Element svt;
    	
    	
    	
            Element(Fichier val){
    		info=val;
    		svt=null;
            }
    		public void setInfo(Fichier info){
    	        this.info = info;
    	}
    	
    	
    	}
    






    import java.util.Scanner;
    
    
    
    public class ListFichiers {
    	
    	Element tete,p;
    	
    	
    	
    	
    	
    	
    	 public ListFichiers() {
    		tete = null;
    		p = null; 
    	}
    	public boolean elementexist(String nnom){
    		 
    		 
    		 for (p=tete;p!=null;p=p.svt)
    		{   
    			if(nnom.compareTo(p.info.nom)==0)
    			{   return(true);}
    		}
    	 return(false);
    	
    	 }
    	 
    	public void ajouter(Fichier val){
    		 new Scanner(System.in);
    		 
             Element nouveau = new Element(val);
             nouveau = null;
             nouveau.svt = tete;
             tete = nouveau;
             
             System.out.print("voilà le premier élément :  "+tete.info.nom);
    	 
    	 
    	 
    	 
    	 
    	 }
    
    		
    	}
    



    public class Date {
    
    	int jour;
    	int mois;
    	int anne;
    	
    	public Date(int jour,int mois ,int anne){
    		this.anne=anne;
    		this.mois=mois;
    		this.jour=jour;
    	}
    	
    }
    











    import java.util.*;
    public class Fichier {
    	
    	   String nom;
    	   int taille;
    	         Date datemodif;
    	  boolean accèlecture;
    	  boolean accèecriture;
    	  Fichier val;
    	
    	  
    	  public Fichier(){
    		nom = null;
    		taille=0;
    		this.datemodif= new Date(0,0,0);
    		
    	  }
    	
    	 
    	
    	
    	void lecture(){
    		System.out.print("le fichier "+"'"+nom+"'"+" qui a la taille "+taille);
    		}
    	
    	void renommer(){
    		
    		Scanner e=new Scanner(System.in);
    		nom = e.next();
    			
    	}
    	void modifiertaille(){
    		Scanner e=new Scanner(System.in);
    		taille = e.nextInt();
    	}
    	
    	
    	
    	
    	
    	
    	
    	public static void main(String[] args) {
    		Fichier val = null;
    		Fichier f = new Fichier();
    		Scanner e=new Scanner(System.in);
    		System.out.println("veuillez entrer le nom à ajouter :");
    		ListFichiers lst = new ListFichiers();
    		f.val.nom = e.next();
    		f.val.taille = e.nextInt();
    		
    		lst.ajouter(val);
    		
    	}
    
    }
    



    bon maintenant je suis entrain de d'implémenter ma valeur val pour l'envoyer en paramètre à ajout pour que je puisse l'ajouter encore une autre fois dés que je fini la saisie de l'instruction :

    f.val.nom = e.next();
    


    il m'affiche ce message d'erreur :

    Exception in thread "main" java.lang.NullPointerException
    at Fichier.main(Fichier.java:50)


    donc voilà je bloque une nouvelle fois j'attends vos repenses à bientôt et merci d'avance .

    Cordialement ====>Elen<====
    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2011 à 19:26:06

      Tu n'instancie jamais ta variable val.
      Il est toujours à null.
      Par contre, sans vouloir être désagréable, où est-ce que tu as appris le Java?
      Pour accéder aux attributs d'une classe, il est plus propre d'utiliser des accesseurs getVal(), et setVal(Fichier fichier)
      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2011 à 19:30:36

        Si c'est pour vraiment utiliser une liste chaînée, il y a LinkedList.
        • Partager sur Facebook
        • Partager sur Twitter
          24 mai 2011 à 19:39:41

          eh oui justement je voulais pas faire des appelles à des méthodes prédéfinie car je me retrouverais plus du tout je veux du détails comme sa je serais sûre

          @omega eh oui je suis un peu brouillonne avec tout ce que j'entre prend faut vraiment répéter la choses 10000 fois pour assimiler eh pour let get et les set val tu veux que je déclare ma VAL comme PRIVATE ? et pour quoi devrais-je le faire quelles sont les avantages !!
          • Partager sur Facebook
          • Partager sur Twitter
            24 mai 2011 à 19:51:19

            Dans ton code, ce n'est pas nécessaire puisque tu va le garder pour toi.
            Cependant, deux point me viennent à l'esprit :
            - Le code est plus propre et plus facile à lire avec les notions d'accéssibilité.
            - Cela permet de protéger l'accès aux données.
            - Cela permet de s'habituer à les mettre. C'est nécessaire lorsque l'on est plusieurs à coder.

            Si tu veux plus de renseignement, réfère toi au tuto du site.

            Mais pour en revenir à ton erreur et comme écrit dans mon poste précédent, ta variable val est toujours à null, d'où le NullPointerException. Tu dois l'instancier avant de pouvoir lui affecter des valeurs.

            Je ne voulais vraiment pas être désagréable, désolé si je l'ai été.
            C'est simplement que ton code est plus difficile à lire comme ça.
            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2011 à 20:40:34

              ok merci j'accepte toute les critiques, je suis habituer me faut beaucoup de critique pour évoluer surtout à des personnes comme moi
              • Partager sur Facebook
              • Partager sur Twitter
                24 mai 2011 à 22:22:59

                ^^. C'est l'attitude à prendre. Chacun avance à son rythme. J'ai aussi été bloqué sur beaucoup de chose. Bon après on est pas sur doctissimo donc on va pas commencer un débat sur les difficultés d'apprentissage, même si je suis pas sur que tu reçoives tant de critiques négatives que ça.
                Cela étant dit, disons que coder avec les private, les accesseurs, apporte de nombreux avantage. Maintenant, j'ai pu être sec avec toi et je m'en excuse. Surtout que les filles qui étudient l'informatique se font rare (je suis en IUT et 6 filles pour 75 mec, ça se voit).
                Après, si tu as des questions, je suis disposé à y répondre.

                En ce qui concerne ton problème, en espérant que mon post n'ait pas géné les modaux, est-ce que tu as pu le réglé?
                • Partager sur Facebook
                • Partager sur Twitter
                  24 mai 2011 à 22:59:00

                  oui finalement je préfère pas faire avec le private car si j'ai envie de faire entrer une valeur pour ajout sa vas pas le faire genre j'aurais


                  public static void main(String[] args) {
                  		Fichier val ;
                  		Fichier f = new Fichier(null,0,null);
                  		Scanner e=new Scanner(System.in);
                  		System.out.println("veuillez entrer le nom à ajouter :");
                  		ListFichiers lst = new ListFichiers(null);
                  		f.val.nom = e.next();
                  		f.val.taille = e.nextInt();
                                  lst.ajouter(f.setVal());
                  

                  9 lst.ajouter(f.setVal());



                  en rouge et sa m'a perturber je prefere en simple mais toujours le problème n'est pas régler je songe à créer une méthode Listlinked je suis entrain de suivre sur le tuto pour voir ce que sa donne .
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 mai 2011 à 23:05:27

                    essaie de remplacer la ligne Fichier val ; par celle-ci : Fichier val = new Fichier();
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 mai 2011 à 23:32:39

                      bah non plus sa veut pas :(
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 mai 2011 à 23:34:52

                        Tu as toujours un nullPointerException?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          25 mai 2011 à 1:45:40

                          c'est bon sa m'a saoulé j'ai changer de méthode j'ai fait introduire le Arraylist
                          • Partager sur Facebook
                          • Partager sur Twitter

                          liste chaîner

                          × 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