Java StringTokenizer输出到控制台时出错



我试图使用类StringTokenizer从文本文件中分割字符串,但是当我运行应用程序时,编译器在Netbeans控制台打印我正在分裂的单词,但也显示了一个例外。

这是我的代码:

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? :v"");
    }
    String nombre = null, apellido = null, edad = null, bday = null;
   StringTokenizer tokens = new StringTokenizer (auxiliar, ";");
    System.out.println("NombretApellido EdadtFecha 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;
  } 
}

这是我的app

的输出
Nombre  Apellido  Edad  Fecha de Nac.
David    Villa     31        1985
Andrea   Pirlo     36        1980
Lionel   Messi     29        1987
Tomas    Rincon    27        1989

是编译器抛出的异常

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 SettingsGoyoConfiguración localDatos de    
programaNetBeansCache8.1executor-snippetsrun.xml:53: Java returned:1
BUILD FAILED (total time: 0 seconds)

我能做些什么来解决它?

while循环正在测试StringTokenizer是否有一个令牌。但接着你又读到了四个代币。当令牌的数量不能被4整除时,这将会崩溃。

你可以安全地做的是:

StringTokenizer tokens = new StringTokenizer(auxiliar, ";");
while(tokens.hasMoreTokens()){
    token = tokens.nextToken();
    System.out.println(token);
}

相关内容

  • 没有找到相关文章

最新更新