输出到控制台时Java StringTokenizer错误

问题描述 投票:0回答:1

我正在尝试使用类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("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;
  } 
}

这是我的应用程序的输出

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 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)

我该怎么解决?

java exception stringtokenizer
1个回答
0
投票

您的while循环正在测试StringTokenizer是否还有一个令牌。但是随后您又读了四个令牌。当令牌数不能被四整除时,这将崩溃。

您可以放心地做的是:

StringTokenizer tokens = new StringTokenizer(auxiliar, ";");

while(tokens.hasMoreTokens()){
    token = tokens.nextToken();
    System.out.println(token);
}
© www.soinside.com 2019 - 2024. All rights reserved.