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

Collection et Stream Java Discussion :

[ArrayList] Problème d'arrayList


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut [ArrayList] Problème d'arrayList
    Bonjour à tous,

    je débute en Java. Je suis sous éclipse, jdk 1.5.

    J'essaie de faire une petite appli de gestion de projet.
    Donc j'ai des projets Nucléaire et des projets Retrofit qui hérite de projet.
    Un projet à une arraylist de Piece.

    Alors mon problème est que je n'arrive pas à utiliser le polymorphisme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	public void afProjet(int num)
    	{
    		System.out.println("Consulter un projet");
    		myProj.get(num).afficheProj();
    	}
    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
    class Projet {
     
    	//attributs privés
    	  protected int numProj;
    	  protected String nomProj;
    	  protected String nomClientProj;
    	  protected float prixProj;
    	  public ArrayList <Piece> mypiece = new ArrayList();
    .
    .
    .
    public void afficheProj() {
    	  System.out.println("--------------------------------");
    	  System.out.println("Numéro du projet " + numProj);
    	  System.out.println("Nom du projet " + nomProj);
    	  System.out.println("Nom du client " + nomClientProj );
    	  System.out.println("Prix du projet " + prixProj);
     
    	  }
    }
     
    class Nucleaire extends Projet {
     
    //attributs privés
      private int nbVisiteControl;
     
    //méthodes publiques
      public Nucleaire(int unNum,String unProj ,String unNomClient,float unPrix, int unNbVisite) {
    	  super(unNum,unProj,unNomClient,unPrix);
    	  nbVisiteControl=unNbVisite;  
    	}
     
      public void afficheProj() {//méthode pour afficher les infos du projet
      super.afficheProj();
      System.out.println("Nombre de visites de contrôles " + nbVisiteControl);
      System.out.println("--------------------------------");
      }
    Eclipse ne me met pas d'erreur mais quand j'exécute j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Entrez un numéro de projet 1
    Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
    	at java.util.ArrayList.RangeCheck(Unknown Source)
    	at java.util.ArrayList.get(Unknown Source)
    	at gestProjet.afProjet(gestProjet.java:148)
    	at gestProjet.run(gestProjet.java:44)
    	at gestProjet.main(gestProjet.java:12)
    Consulter un projet
    J'ai également une erreur la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void afpiece(int unNum)
    	{
    		System.out.println("Pieces du projet");
    		for(int i=1;i<=myProj.get(unNum).getMyPiece().size()-1;i++)
    		{
    			 myProj.get(unNum).getMyPiece().get(i).affichePiece();
    		}
    	}
    Je pense que c'est une erreur toute con, mais la je sèche...

  2. #2
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    D'après l'exception java.lang.IndexOutOfBoundsException, t'as un indice sur ton ArrayList qui a dépassé les limites inférieures ou supérieures, et ceci dans la méthode afProjet.

    Sauf erreur de ma part, je ne vois pas où est ce que tu crées ta liste myProj

  3. #3
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Voici ou je fait ma déclaration

    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
    import java.util.ArrayList;
     
    @SuppressWarnings("unchecked")
    public class gestProjet
    {
    	ArrayList <Projet> myProj=new ArrayList(); //déclaration d'un arraylist pour stocker les projets
    	ArrayList <Piece> listPiece=new ArrayList(); //déclaration d'un arraylist pour stocker les pièces
    	static public void main(String[] args)
     
    	{			
    	    gestProjet a = new gestProjet();
    		a.run();
    	}
     
    	public void run()
    .
    .
    .
    Pour tester je créé un nouveau projet (numéro 1) et je test l'affichage, mais ça ne fonctionne pas.

  4. #4
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut
    Où est ce que tu remplis ta liste myProj?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Je rempli comme ça :
    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
    public void ajNucleaire()
     
    	{
    		  System.out.println("Ajout d'un projet nucléaire");
    		  int nnum = Console.readInt("Entrez un numéro de projet");
    		  String nnom= Console.readLine("Entrez un nom de projet");
    		  String nclient = Console.readLine("Entrez un nom de client");
    		  float nprix= Float.parseFloat(Console.readLine("Entrez un prix"));
    		  int nvisite=Console.readInt("Entrez un nombre de visite");
     
    		  Nucleaire proj=new Nucleaire(nnum,nnom,nclient,nprix,nvisite);
     
    		  for(int i=0;i<=listPiece.size()-1;i++)
    			{
    				proj.getMyPiece().add(listPiece.get(i));
    			}
    		  myProj.add(proj);
     
    		  System.out.println("Projet ajouté");
    	}
     
    	public void ajRetrofit()
    	{
    		  System.out.println("Ajouter un projet retrofit");
    		  System.out.println("Ajout d'un projet nucléaire");
    		  int rnum = Console.readInt("Entrez un numéro de projet");
    		  String rnom= Console.readLine("Entrez un nom de projet");
    		  String rclient = Console.readLine("Entrez un nom de client");
    		  float rprix= Float.parseFloat(Console.readLine("Entrez un prix"));
    		  String rdate=Console.readLine("Entrez une date");
     
    		  Retrofit proj=new Retrofit(rnum,rnom,rclient,rprix,rdate);
     
    		  for(int i=0;i<=listPiece.size()-1;i++)
    			{
    				proj.getMyPiece().add(listPiece.get(i));
    			}
    		  myProj.add(proj);
    		  System.out.println("Projet ajouté");
    	}

  6. #6
    Membre actif Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Points : 251
    Points
    251
    Par défaut
    L'erreur est claire. la taille de ton arrayList est de 1 donc il n'y a qu' un element dont l'indice est 0 alors que ta boucle commence à partir de l'indice 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     		for(int i=1;i<=myProj.get(unNum).getMyPiece().size()-1;i++)
    		{
    			 myProj.get(unNum).getMyPiece().get(i).affichePiece();
    		}
    donc le i est hors limite.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Peut être mais l'erreur concerne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void afProjet(int num)
    	{
    		System.out.println("Consulter un projet");
    		myProj.get(num).afficheProj();
    	}

  8. #8
    Membre actif Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Points : 251
    Points
    251
    Par défaut
    postes s'il te plait des classes plus complète comme ça on pourra voir ou est ce que tu appelles afproject et comment tu l'appelles.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Je répond vite fait, je dois partir.
    J'appel afProjet() dans un petit menu (pas d'interface graphique)
    et je lui passe un entier en paramètre.

  10. #10
    Membre actif Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Points : 251
    Points
    251
    Par défaut
    oui mais cet entier provient d'où. Saisie, boucle.
    il y'a un dépassement et pour le trouver on a besoin de voir la ou tu remplis ton arraylist et la ou tu l'affiche.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Ah merci j'ai compris mon erreur. Le projet était en position zéro dans l'arrylist. J'étais sur que je faisais une erreur con en plus...
    Par contre je bloque toujours sur l'autre erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void afpiece(int unNum)
    	{
    		System.out.println("Pieces du projet");
    		for(int i=1;i<=myProj.get(unNum).getMyPiece().size()-1;i++)
    		{
    			 myProj.get(unNum).getMyPiece().get(i).affichePiece();
    		}
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Exception in thread "main" java.lang.Error: Unresolved compilation problem:
    La méthode affichePiece() n'est pas définie pour le type object

  12. #12
    Membre actif Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Points : 251
    Points
    251
    Par défaut
    change tes declarations ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public ArrayList <Piece> mypiece = new ArrayList<Piece>();
    pour que le type de retour de get(i) soit Piece et non Objet sinon tu doit caster le retour de get(i)

  13. #13
    Nouveau membre du Club
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    Points : 29
    Points
    29
    Par défaut
    Bon j'ai quand même du caster pour que ça marche, merci beaucoup de ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'Arraylist contenant une Arraylist
    Par bowwwod dans le forum Collection et Stream
    Réponses: 25
    Dernier message: 28/03/2011, 14h35
  2. problème avec ArrayList et JVM
    Par ulysse031 dans le forum Collection et Stream
    Réponses: 29
    Dernier message: 26/04/2007, 20h47
  3. problème avec arraylist
    Par ulysse031 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 27/02/2007, 12h00
  4. [débutant] problème avec arraylist
    Par sissi25 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 17/12/2006, 16h01
  5. Problème avec ArrayList <String>
    Par fiphi dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 29/08/2006, 09h30

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