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 et NoSuchElementException


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
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut ArrayList et NoSuchElementException
    Bonjour,

    un petit problème avec une ArrayList que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	private static ArrayList <LinkedList<Chronique>> maliste = new ArrayList<LinkedList<Chronique>>();
    Quand je fait sà, lors de l'ajout dans l'arrayList sa fonctionne a merveille, je récupère bien les valeurs souhaité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(maliste.get(count_remplir_array).getFirst().getTemperature());
    Par contre dans une autre fonction que voici , j'ai un problème à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(maliste.get(i).getFirst().getId_station()==id_selec){
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.util.NoSuchElementException
    	at java.util.LinkedList.getFirst(Unknown Source)
    	at ChargerStation.analyse(ChargerStation.java:170)
    et la fonction en question :
    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
     
    public static void analyse(){
    	int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
    	System.out.println(id_selec);
    	System.out.println(maliste.size());
    	for(int i=0;i<maliste.size();i++){
    		System.out.println(maliste.get(i).getFirst().getTemperature());	
    		if(maliste.get(i).getFirst().getId_station()==id_selec){
    			int max = maliste.get(i).size();
    			valeursTab=new double[1][max];
    			for(int j=0;j<maliste.get(i).size();j++){
    				double donnee = maliste.get(i).get(j).getTemperature();
    				valeursTab[0][j] = donnee;
    			}
    		}
    	}
    }
    Merci d'avance du coup de pouce

  2. #2
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    Tu as déjà vérifié "System.out.println(id_selec)"

    Alors c'est comme si getId_station() n'existe pas.
    Ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(maliste.get(count_remplir_array).getFirst().getId_station());
    pour voir ...
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 72
    Par défaut
    Citation Envoyé par Népomucène Voir le message
    Tu as déjà vérifié "System.out.println(id_selec)"

    Alors c'est comme si getId_station() n'existe pas.
    Ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(maliste.get(count_remplir_array).getFirst().getId_station());
    pour voir ...
    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
     
    public static void analyse_fichier(String nom_fichier){
    		BufferedReader lecteurAvecBuffer = null;
    		String ligne=null;
    		try
    		{
    			lecteurAvecBuffer = new BufferedReader(new FileReader(nom_fichier));
    		}
    		catch(FileNotFoundException exc)
    		{
    			System.out.println("Erreur d'ouverture");
    		}
    		try{ 
     
    			String[] chaineEclate = null;
    			// System.out.println(lecteurAvecBuffer);
    			ligne = lecteurAvecBuffer.readLine();
    			while ((ligne = lecteurAvecBuffer.readLine()) != null){
    				String eclate = ligne;
    				chaineEclate = eclate.split("\t");
    				//System.out.println(chaineEclate[0]);
    				Chronique s1 = new Chronique(Integer.valueOf(chaineEclate[0]),Integer.valueOf(chaineEclate[1]),Integer.valueOf(chaineEclate[2]),
    Integer.valueOf(chaineEclate[3]),Float.valueOf(chaineEclate[5]),Integer.valueOf(chaineEclate[6]),Integer.valueOf(chaineEclate[7]),
    Integer.valueOf(chaineEclate[8]),Integer.valueOf(chaineEclate[9]),
    Integer.valueOf(chaineEclate[10]),Integer.valueOf(chaineEclate[11]));
    				chroniques.add(s1);
     
     
    				eclate="";
    				//ESSAI POUR LE PREMIER GRAPH AVEC SEULEMENT LES TEMPERATURES
    			/*	if(x==0){
    				Chronique s2 = new Chronique(Float.valueOf(chaineEclate[5]));
    				chro.add(s2);
    				}
    			*/	
     
    				// chroniques.remove();
     
     
    			}
    			//
    			//listestations.add(Integer.valueOf(chaineEclate[0]),chroniques);
    			maliste.add(chroniques);
    			//System.out.println(maliste.get(count_remplir_array).getFirst().getTemperature());
    			System.out.println(maliste.get(count_remplir_array).getFirst().getId_station());
    			//System.out.println(count_remplir_array);
    			//System.out.println(maliste.get(count_remplir_array).)
    			Station s2 = new Station(Integer.valueOf(chaineEclate[0]),maliste.get(count_remplir_array));
    			listestations.add(s2);
    			MapView.comboL.addItem(chaineEclate[0]);
     
    		lecteurAvecBuffer.close();
    		chroniques.clear();
    		count_remplir_array++;
    	//	System.out.println(chroniques);
    	//	System.out.println(chro);
    		}
    	catch(IOException e){System.err.println(e);}
     
    	}
    Fonctionne très très bien ici , je récupère bien chaque identifiant de mes stations et quand je vais le faire là :
    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
    public static void analyse(){
    	int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
    	System.out.println(id_selec);
    	System.out.println(maliste.size());
    	int ii=0;
    	System.out.println(maliste.get(ii).getFirst().getId_station());
     
    	for(int i=0;i<maliste.size();i++){
    		System.out.println(maliste.get(i).getFirst().getTemperature());	
    		if(maliste.get(i).getFirst().getId_station()==id_selec){
    			int max = maliste.get(i).size();
    			valeursTab=new double[1][max];
    			for(int j=0;j<maliste.get(i).size();j++){
    				double donnee = maliste.get(i).get(j).getTemperature();
    				valeursTab[0][j] = donnee;
    			}
    		}
    	}
    }
    sa me met cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    java.util.NoSuchElementException
    	at java.util.LinkedList.getFirst(Unknown Source)
    	at ChargerStation.analyse(ChargerStation.java:171)
    la ligne 171 correspond au println que vous m'avez demander de faire ...

  4. #4
    Modérateur

    Homme Profil pro
    Développeur java, access, sql server
    Inscrit en
    Octobre 2005
    Messages
    2 713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur java, access, sql server
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 713
    Par défaut
    C'est assez curieux.
    la doc java de NoSuchElementException indique :
    Thrown by the nextElement method of an Enumeration to indicate that there are no more elements in the enumeration.
    à l'évidence c'est le java.util.LinkedList.getFirst qui ne trouve pas l'élément.
    Cependant le maliste.get(i).getFirst().getTemperature() ne plante pas.

    Tu pourrais essayer de récupérer l'objet d'abord
    et d'exploiter ses propriétés ensuite :

    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
    public static void analyse(){
    	int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
     
    	for(int i=0;i<maliste.size();i++){
                    Chronique chr = maliste.get(i).getFirst();
    		System.out.println(chr.getTemperature());	
    		if(chr.getId_station()==id_selec){
    			int max = maliste.get(i).size();
    			valeursTab=new double[1][max];
    			for(int j=0;j<maliste.get(i).size();j++){
    				double donnee = maliste.get(i).get(j).getTemperature();
    				valeursTab[0][j] = donnee;
    			}
    		}
    	}
    }
    Labor improbus omnia vincit un travail acharné vient à bout de tout - Ambroise Paré (1510-1590)

    Consulter sans modération la FAQ ainsi que les bons ouvrages : http://jmdoudoux.developpez.com/cours/developpons/java/

  5. #5
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Et même ç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
     
    public static void analyse(){
    	final int id_selec = Integer.parseInt((String) MapView.comboL.getSelectedItem()); 
     
    	for(int i=0;i<maliste.size();i++){
                    final LinkedList<Chronique> list = maliste.get(i);
                    final Chronique chr = list.getFirst();
    		System.out.println(chr.getTemperature());	
    		if(chr.getId_station()==id_selec){
    			final int max = list.size();
    			valeursTab=new double[1][max];
    			for(int j=0;j<list.size();j++){
    				final double donnee = list.get(j).getTemperature();
    				valeursTab[0][j] = donnee;
    			}
    		}
    	}
    }
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

  6. #6
    Rédacteur
    Avatar de thierryler
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    4 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 078
    Par défaut
    Pour aider, voici un petit test avec une liste vide, en java 6 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public static void main(String[] args) {
    	LinkedList<String> list = new LinkedList<String>();
    	String str = list.getFirst();
    }
    Ca me donne bien l'exception suivante, comme toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" java.util.NoSuchElementException
    	at java.util.LinkedList.getFirst(Unknown Source)
    	at org.test.ListTesteur.main(ListTesteur.java:13)
    Et la javadoc dit bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Throws:  NoSuchElementException - if this list is empty
    Reste à savoir pourquoi ça ne plante pas dans ton system.out... Tu es bien certain d'avoir lancer le code que tu nous as envoyé ?

    Donne nous les traces exactes de tes system.out, qu'on vérifie que tu as bien le bon nombre d'éléments par exemple
    Thierry Leriche-Dessirier
    Consultant Java JEE Web Agile freelance
    Rédacteur pour Developpez
    Professeur de Génie Logiciel à l'ESIEA

    Site : http://www.icauda.com / Linked'in : http://www.linkedin.com/in/thierryler / Twitter : @ThierryLeriche

Discussions similaires

  1. [SAX] NoSuchElementException sur parser XML
    Par iceman dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 17/05/2004, 14h42
  2. [info]arrayList ou Vector
    Par schousso dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 12/05/2004, 15h47
  3. [info]ArrayList
    Par schousso dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 06/05/2004, 11h44
  4. [Fichier] Ajout des lignes de doc dans arraylist
    Par 3adoula dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 29/04/2004, 22h41
  5. [ STRUTS ][ JSP ][ ArrayList] un lien pour trier
    Par LoulouFifi dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/02/2004, 17h24

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