2017-03-18 4 views
-3
import java.io.*; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.StringTokenizer; 

public class Main { 
    public static void main(String[] args){ 
     Persona persona1 = new Persona(); 
     try{ 
      StringTokenizer st; 
      BufferedReader br = new BufferedReader(new FileReader("entrada.txt")); 
      String linea = br.readLine(); 
      PrintWriter pw = new PrintWriter(new FileWriter("datos.csv")); 

      while(linea != null){ 
       st = new StringTokenizer(linea); 
       persona1.setNombre(st.nextToken()); 
       persona1.setRFC(st.nextToken()); 
       persona1.setSueldoMensual(Double.parseDouble(st.nextToken()); 
       persona1.setPrimaVacacional(Double.parseDouble(st.nextToken())); 
       persona1.setGastosHospitalarios(Double.parseDouble(st.nextToken())); 
       persona1.setGastosFunerarios(Double.parseDouble(st.nextToken())); 
       persona1.setSGMM(Double.parseDouble(st.nextToken())); 
       persona1.setGastosHipotecarios(Double.parseDouble(st.nextToken())); 
       persona1.setDonativos(Double.parseDouble(st.nextToken())); 
       persona1.setAportacionRetiro(Double.parseDouble(st.nextToken())); 
       persona1.setTransporteEscolar(Double.parseDouble(st.nextToken())); 
       persona1.setNivelEducativo(st.nextToken()); 
       persona1.setColegiaturaTotal(Double.parseDouble(st.nextToken())); 

       pw.println(persona1.getNombre() + "," + persona1.getRFC() + "," + persona1.getSueldoMensual() 
      + "," + persona1.getPrimaVacacional() + "," + persona1.getGastosHospitalarios() + "," + persona1.getGastosFunerarios() 
      + "," + persona1.getSGMM() + "," + persona1.getGastosHipotecarios() + "," + persona1.getDonativos() 
      + "," + persona1.getAportacionRetiro() + "," + persona1.getTransporteEscolar() 
      + "," + persona1.getNivelEducativo() + "," + persona1.getColegiaturaTotal()); 
      } 
      br.close(); 
      pw.close(); 
     } 
     catch(FileNotFoundException ex){ 
      System.out.println("Ocurrio un error " + ex); 
     } 
     catch(IOException ex){ 
      System.out.println("Ocurrio un error " + ex); 
     } 
    } 
} 

Mein Programm erhält eine TXT-Datei und gibt die Informationen in einer CSV-Datei, aber wenn ich es laufen gibt es diesen Fehler:Warum gibt mein Code diesen Fehler zurück: java.util.NoSuchElementException?

Exception in thread "main" java.util.NoSuchElementException 
    at java.util.StringTokenizer.nextToken(StringTokenizer.java:349) 
    at Main.main(Main.java:26) 

Dies hat keinen Sinn, weil ich ein anderes Programm, das macht eine ähnliche Sache, aber ich kann nicht herausfinden, was das Problem ist.

+1

Da die Zeile kein nächstes Token hat, wenn Sie versuchen, es in Zeile 26 Ihrer Klasse zu erhalten. Rea die Dokumentation von StringTokenizer. Überprüfen Sie Ihre Eingabedatei. –

+0

Es hat diesen Fehler nicht zurückgegeben, es hat diese Ausnahme ausgelöst. Korrekte Terminologie bitte. – EJP

Antwort

0

Ihr Problem ist, dass es kein Token gibt und Sie versuchen, es zu setzen, und die Ausnahme sagt, dass es kein solches Element gibt.

Um NoSuchElementException zu vermeiden, sollten Sie mit Hilfe von StringTokenizer.hasMoreTokens() immer prüfen, ob es weitere Token gibt.

0

Versuchen Sie es mit:

while (st.hasMoreTokens()) { 
     //do things 
    } 

Mein Denken ist, dass ein String als leeren String endet (""), wenn die tokenizer geschehen ist, nicht null.

Verwandte Themen