J'essaie d'utiliser la classe StringTokenizer
pour séparer une chaîne de caractères d'un fichier texte, mais lorsque j'utilise l'application, le compilateur imprime dans la console Netbeans les mots que je divise mais aussi montre une exception.Java StringTokenizer Erreur
Ceci est mon code:
package Calqfunny;
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.StringTokenizer;
import javax.swing.JOptionPane;
public class Files {
public String direccion;
public Files(){
direccion = " ";
}
public Files(String direccion){
this.direccion = direccion;
}
public String leerTxt(String direccion){
String auxiliar = " ";
try{
BufferedReader br = new BufferedReader(new FileReader(direccion));
String temp = " "; //Aqui guardamos el texto del archivo temporalmente
String banana; //aqui almacenamos
while((banana = br.readLine())!=null){
//se realiza el ciclo mientras que el archivo tenga datos.
temp = temp + banana;
}
auxiliar = temp;
}catch(Exception e){
JOptionPane.showMessageDialog(null,"\"¿Cómo vas a pedir un archivo que no existe? boludo :v\"");
}
String nombre = null, apellido = null, edad = null, bday = null;
StringTokenizer tokens = new StringTokenizer (auxiliar, ";");
System.out.println("Nombre\tApellido Edad\tFecha de Nac.");
while(tokens.hasMoreTokens()){
nombre = tokens.nextToken();
apellido = tokens.nextToken();
edad = tokens.nextToken();
bday = tokens.nextToken();
System.out.println(nombre+"\t"+apellido+"\t"+edad+"\t"+bday);
}
return auxiliar;
}
}
Ceci est la sortie de mon application
Nombre Apellido Edad Fecha de Nac.
David Villa 31 1985
Andrea Pirlo 36 1980
Lionel Messi 29 1987
Tomas Rincon 27 1989
Et ceci est l'exception que le compilateur jette
Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at Calqfunny.Files.leerTxt(Files.java:69)
at Calqfunny.Mein.main(Mein.java:14)
C:\Documents and Settings\Goyo\Configuración local\Datos de
programa\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned:1
BUILD FAILED (total time: 0 seconds)
Que puis-je faire pour le résoudre?
Pouvez-vous fournir le contenu de votre fichier Direccion? – developer
Comme javaguy a dit, le contenu du fichier serait la clé pour résoudre votre problème. En outre, cette erreur est due à votre boucle while while (tokens.hasMoreTokens()) '- hasMoreTokens() est généralement valide pour 1 jeton de plus, et vous en consommez 4 à la fois. –
@javaguy pouvez-vous être plus précis? Je ne comprends pas. –