Java 输出到控制台时出现 StringTokenizer 错误
Java StringTokenizer Error when outputting to console
我正在尝试使用 class 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.1\executor-snippets\run.xml:53: Java returned:1
BUILD FAILED (total time: 0 seconds)
我能做些什么来解决它?
您的 while 循环正在测试 StringTokenizer
是否还有一个标记。但是你正在阅读另外四个令牌。当令牌的数量不能被四整除时,这将崩溃。
您可以安全地做的是:
StringTokenizer tokens = new StringTokenizer(auxiliar, ";");
while(tokens.hasMoreTokens()){
token = tokens.nextToken();
System.out.println(token);
}
我正在尝试使用 class 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.1\executor-snippets\run.xml:53: Java returned:1
BUILD FAILED (total time: 0 seconds)
我能做些什么来解决它?
您的 while 循环正在测试 StringTokenizer
是否还有一个标记。但是你正在阅读另外四个令牌。当令牌的数量不能被四整除时,这将崩溃。
您可以安全地做的是:
StringTokenizer tokens = new StringTokenizer(auxiliar, ";");
while(tokens.hasMoreTokens()){
token = tokens.nextToken();
System.out.println(token);
}