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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    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 confirmé Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    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
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    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 confirmé Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

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

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2007
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 73
    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 expérimenté Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    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.

+ 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