Partage
  • Partager sur Facebook
  • Partager sur Twitter

visibiliter du arraylist

    26 mai 2011 à 20:50:49

    bonsoir à tous !
    j'ai utilisé mon arraylist pour une classe, maintenant j'ai envie d'apporter des modifications sur ce tableau de liste mais dans une autre classe voilà un exemple

    Pour faire entrer les valeurs à ma liste je manipule cette classe :

    import java.util.ArrayList;
    import java.util.Scanner;
    
    
    
    public class ListFichiers {
    	
    	Fichier f=new Fichier();
    	private static Scanner e = new Scanner(System.in);
    	
        public int n=e.nextInt();
        
    	ArrayList<Fichier> V = new ArrayList<Fichier>(n);
    	
    	@Override
    	  public String toString(){
    	   return "Le fichier " + f.nom + " a une taille de " + f.taille + " octets. Il a été modifié pour la dernière fois le " + f.datemodif.jour +"/"+f.datemodif.mois+"/"+f.datemodif.anne;
    	  }
    	
    	
    	
    public ListFichiers ()
    {	int i=0;
    	for(i=0;i<n;i++)
    	V=new ArrayList<Fichier>();
    }
    	
    
    
    
    public void ajouter()
    {int i;
    	for(i=0;i<n;i++){
    	
    	Fichier f=new Fichier();
    	System.out.println("entrer le nom du fichier");
    	f.nom=e.next();
    	System.out.println("entrer la taille");
    	f.taille=e.nextInt();
    	System.out.println("accecibeliter");
    	System.out.println("entrer la date jour ");
        f.datemodif.jour=e.nextInt();
    	System.out.println("entrer la date mois  ");
    	f.datemodif.mois=e.nextInt();
    	
    	System.out.println("entrer la date anne  ");
    	f.datemodif.anne=e.nextInt();
    	V.add(f);
    	 				}
    	}
    




    et je veux manipuler ma liste on la triant ou apportant des modifications mais dans une autre Classe par exemple cella :

    import java.util.ArrayList;
    import java.util.Scanner;
    
    
    public class ListOrdFichiers {
    	private static Scanner e = new Scanner(System.in);
    	int n=1;
    	
    	ListFichiers lst = new ListFichiers();
    	
    
    
    	void afficherr(){
    		
    		for(int i=0;i<n;i++) 
    			 
    			System.out.println("le vecteur T est : "+lst.V.get(i).nom);
    		
    
    	}
    





    voilà donc si quelqu'un pourrais m'aider pour que la liste reste visible à travers les classe sa serais sympa

    merci d'avance j'attends vos repenses

    Cordialement ===>ELen<===
    • Partager sur Facebook
    • Partager sur Twitter
      26 mai 2011 à 21:05:03

      t'a pas oublier de créer un objet de la classe ListeFichiers par hasard ?
      • Partager sur Facebook
      • Partager sur Twitter
        26 mai 2011 à 21:15:19

        ok je vient de modifier voilà comme sa avec le lst.V quant j'appelle ma methode dans le main ord.afficherr(); sa me génère des erreurs il me dit :

        Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.RangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at ListOrdFichiers.afficherr(ListOrdFichiers.java:22)
        at Fichier.main(Fichier.java:60)


        voilà
        • Partager sur Facebook
        • Partager sur Twitter
          26 mai 2011 à 22:02:01

          modifie ta fonction ainsi :

          void afficherr(){
          		
          		for(int i=0;i<lst.V.size();i++) 
          			 
          			System.out.println("le vecteur T est : "+lst.V.get(i).nom);
          		
          
          	}
          


          et après remplit ta liste avec quelque valeur à l'aide de la fonction ajouter
          et ça :
          ListFichiers lst = new ListFichiers();
          

          tu devrais le mettre dans le main et le mettre en paramètre de la fonction afficher
          ou alors afficher tu la mets dans la classe ListFichier
          • Partager sur Facebook
          • Partager sur Twitter
            26 mai 2011 à 22:29:37

            cette fois il me génère plus aucune erreur mais il m'affiche rien une fois la derniere valeur année entrer c'est bon il terminer sans rien m'afficher voilà mon main :

            public static void main(String[] args) {
            		
            		Fichier f = new Fichier();
            		Scanner e=new Scanner(System.in);
            		System.out.println("veuillez entrer le nombre de fichier a introduire :");
            		ListFichiers lst = new ListFichiers();
            		System.out.println("***********");
            		ListOrdFichiers ord = new ListOrdFichiers();
            		lst.ajouter();
            		ord.afficherr();
            		
            		
            		
            		
            	}
            
            }
            



            y'a autre chose quant je l'exécute il me donne la main deux fois exemple :

            veuillez entrer le nombre de fichier a introduire :
            2                         /* la premier or que j'ai pas mis un e.next*/
            ***********               /*le print(******) aprés il me donne la main */ 
            2                         /* et une deuxiemme fois pareil */
            entrer le nom du fichier
            daeea
            entrer la taille
            444
            accecibeliter
            entrer la date jour 
            444
            entrer la date mois  
            4
            entrer la date anne  
            4
            entrer le nom du fichier
            4
            entrer la taille
            5
            accecibeliter
            entrer la date jour 
            5
            entrer la date mois  
            
            4
            entrer la date anne  
            4



            donc voilà merci d'avance
            • Partager sur Facebook
            • Partager sur Twitter
              26 mai 2011 à 22:45:38

              le premier doit venir d'ici : public int n=e.nextInt(); dans la classe ListFichier

              c'est normal qu'il n'afficher rien, tu utilise la méthode afficher sur la classe ListOrdFichier qui ne contient rien dans l'attribut lst
              tu dois donc faire un constructeur de cette classe avec comme attribut une listFichier qui te permettra de faire l'affectation de lst
              tu ne dois pas trop comprendre la notion de conception objet apparemment
              relis les cours de java sur le sdz ça devrait t'aider je pense
              • Partager sur Facebook
              • Partager sur Twitter
                27 mai 2011 à 16:03:50

                oui mais le lst est un est un objet qui point vers la liste que j'ai implémenté précédemment dans la classe listefichier

                j'ai eu une autre idée de faire une autre liste au niveau de listordfichier et copier le liste qui est dans listfichier sur celle qui est dans listordfichier
                mais une fois de plus il m'affiche ce message
                Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
                at java.util.ArrayList.RangeCheck(Unknown Source)
                at java.util.ArrayList.get(Unknown Source)
                at ListOrdFichiers.copie(ListOrdFichiers.java:30)
                at Fichier.main(Fichier.java:60)


                voilà le code :





                import java.util.ArrayList;
                import java.util.Scanner;
                
                
                public class ListOrdFichiers {
                	
                	ListFichiers attri;
                	
                	void ListOrdFichiers(){
                		
                		attri = null;
                		
                		
                	}
                	private static Scanner e = new Scanner(System.in);
                	int n=1;
                	
                	ListFichiers lst = new ListFichiers();
                	Fichier f = new Fichier();
                	ArrayList<Fichier> T = new ArrayList<Fichier>(n);
                
                	public ListOrdFichiers()
                	{	int i=0;
                		for(i=0;i<n;i++)
                		T=new ArrayList<Fichier>();
                	}
                		
                	void copie(){
                		for(int i=0;i<n;i++){
                		lst.V.get(i);
                		T.add(f);
                		}
                		}
                	
                	
                	
                
                	void afficherr(){
                		
                		for(int i=0;i<lst.V.size();i++) 
                			 
                			System.out.println("le vecteur T est : "+T.get(i).nom);
                		
                
                	}
                	
                	
                	public void ordonner(){
                		int i;
                		for(i=0;i<n;i++);
                		
                		
                		
                		
                	}
                
                }
                





                public static void main(String[] args) {
                		
                		Fichier f = new Fichier();
                		Scanner e=new Scanner(System.in);
                		System.out.println("veuillez entrer le nombre de fichier a introduire :");
                		ListFichiers lst = new ListFichiers();
                		System.out.println("***********");
                		ListOrdFichiers ord = new ListOrdFichiers();
                		lst.ajouter();
                		ord.copie();
                		ord.afficherr();
                



                voilà merci d'avance j'ai ajouté un constructeur dans la classe listeordfichier mais rien ne change
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  27 mai 2011 à 16:15:37

                  si tu regardes sur google a quoi correspond indexOutOfBound exception, tu trouveras directement la réponse.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  visibiliter du arraylist

                  × 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