NoSuchElementException at StringTokenizer.nextToken
Résolu
chida29
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
chida29 Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
chida29 Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je débute en java donc svp aidez moi!!
j'ai un programme et quand je l'exécute il me donne cette erreur:
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at programmeprincipale.lecturefichier.main(lecturefichier.java:41)
je fait quoi?
Merci d'avance
je débute en java donc svp aidez moi!!
j'ai un programme et quand je l'exécute il me donne cette erreur:
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at programmeprincipale.lecturefichier.main(lecturefichier.java:41)
je fait quoi?
Merci d'avance
A voir également:
- Exception in thread main java.util.nosuchelementexception
- World at arms - Télécharger - Rôle RPG
- Seti at home - Télécharger - Web & Internet
- At mail - Forum Linux / Unix
- This is the mail system at host ✓ - Forum Mail
- Disc at once - Forum Gravure
1 réponse
Avant de faire un nextToken tu dois faire un test hasMoreTokens pour vérifier que tu as bien des éléments à lire après, sinon ça n'a pas de sens, d'où l'exception.
Remarque : la classe StringTokenizer ne devrait plus être utilisée, elle n'est conservée que pour la compatibilité des anciens programmes. Voir la documentation officielle.
"StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead."
Remarque : la classe StringTokenizer ne devrait plus être utilisée, elle n'est conservée que pour la compatibilité des anciens programmes. Voir la documentation officielle.
"StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code. It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead."
public class lecturefichier {
static File collection =new File("E:\\collection\\collection.txt");
public static void main(String[] args) {
BufferedReader in2=null;
String ligne2;
boolean eof=false;
try //lecture du fichier collention.txt
{
in2=new BufferedReader(new FileReader(collection));
ArrayList<String> tab=new ArrayList<String>();
boolean bool=false;
while (eof !=true)
{
ligne2=in2.readLine();
if (ligne2 !=null) { //System.out.println(ligne2);}
StringTokenizer str=new StringTokenizer(ligne2.trim());
String tok=null;
if (ligne2.startsWith("<ABSTRACT>"));
{
bool=true;
//ligne2=in2.readLine();
tok=str.nextToken();
tok=str.nextToken();
tok=str.nextToken();
}
if (bool==true)
{
while(str.hasMoreTokens())
{
if(tok.trim().equals("</ABSTRACT>)")==false)
{
tab.add(tok);
tok=str.nextToken();
}
else
bool=false;
}
}
}
else { eof=true; }
System.out.println(tab);
}
} catch (FileNotFoundException ex) {
System.out.println("fichier non trouvé");
} catch(IOException ex){
System.out.println("erreur lecture ligne fichier");
} //fin de la lecture du fichier collection.txt
}
}
De plus ta boucle while est fausse :
En effet si ta condition "if" n'est pas vérifié alors tu ne lis pas le mot "tok" suivant, donc tu testes toujours la même chose dans le str.hasMoreTokens() et ton programme tourne en rond.