elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Error con StringTokenizer
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Error con StringTokenizer  (Leído 1,488 veces)
Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Error con StringTokenizer
« en: 18 Septiembre 2015, 23:31 pm »

Muy buenas, a ver, estoy haciendo una función para guardar en objetos la información de un archivo. El archivo en cuestión es un CSV y en cada linea hay un personaje (excepto en la primera que están el nombre de las características), y voy creando objetos así (en el array no uso la posición 0 porque es el id que se creará automáticamente). Me he dado cuenta que crea uno sí, uno no, no todos. Y la defensa me pone sólo unidades y decenas no las centenas :/

Además de que me da este error :

java.lang.NullPointerException
   at java.util.StringTokenizer.<init>(Unknown Source)
   at java.util.StringTokenizer.<init>(Unknown Source)
   at Propuesta4.mainRol.abrirArchivo(mainRol.java:42)
   at Propuesta4.mainRol.main(mainRol.java:25)

El código es el siguiente :

Código
  1. public static void abrirArchivo(){
  2.  
  3. File f1 = new File("."+SEPARATOR+"archivos"+SEPARATOR+"rol.csv");
  4.  
  5. String cadena = "";
  6. String[] elementos = new String[8];
  7. try{
  8. FileReader fr = new FileReader(f1);
  9.  
  10. while(br.readLine()!=null){
  11. cadena = br.readLine();
  12. StringTokenizer st = new StringTokenizer(cadena, ",");
  13.  
  14. int i = 0;
  15. while(st.hasMoreElements()){
  16. elementos[i] = (String)st.nextElement();
  17. i++;
  18. }
  19.  
  20. personajes.add(new Personaje(elementos[1], elementos[2], elementos[3], elementos[4],
  21. Integer.parseInt(elementos[5]), Integer.parseInt(elementos[6]), Integer.parseInt(elementos[7])));
  22. }
  23.  
  24. br.close();
  25. fr.close();
  26. }catch(Exception e){
  27. e.printStackTrace();
  28. }
  29.  
  30. }

Un abrazo.

EDITO: La linea del error es esta :
Código
  1. StringTokenizer st = new StringTokenizer(cadena, ",");


En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
0roch1

Desconectado Desconectado

Mensajes: 123



Ver Perfil
Re: Error con StringTokenizer
« Respuesta #1 en: 19 Septiembre 2015, 01:43 am »

Intenta así.
Hice unas pequeñas modificaciones a tu código.

Código
  1.         public void abrirArchivo(String archivo){
  2.  
  3. File f1 = new File(archivo);
  4.  
  5. if(f1.exists()) {
  6.  
  7. String cadena = "";
  8. StringTokenizer st = null;
  9. int tokenNumber = 0;
  10.  
  11. String[] elementos = new String[8];
  12.  
  13. try{
  14. FileReader fr = new FileReader(f1);
  15.  
  16. while((cadena = br.readLine()) != null){
  17.  
  18.                            st = new StringTokenizer(cadena, ",");
  19.  
  20.                            while(st.hasMoreElements()) {
  21.                            tokenNumber++;
  22.                            elementos[tokenNumber] = (String)st.nextElement();
  23.                        }
  24.                        tokenNumber = 0;
  25.  
  26.                        System.out.println(elementos[1]+"-"+elementos[2]+"-"+elementos[3]+"-"+elementos[4]+"-"+elementos[5]+"-"+elementos[6]+"-"+elementos[7]);
  27.  
  28. //personajes.add(new Personaje(elementos[1], elementos[2], elementos[3], elementos[4],
  29. //Integer.parseInt(elementos[5]), Integer.parseInt(elementos[6]), Integer.parseInt(elementos[7])));
  30. }
  31.  
  32. br.close();
  33. fr.close();
  34. }catch(Exception e){
  35. e.printStackTrace();
  36. }
  37. }else {
  38. System.out.println("No se encontro el archivo");
  39. }
  40.  
  41. }
  42.  


En línea

Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Error con StringTokenizer
« Respuesta #2 en: 19 Septiembre 2015, 12:48 pm »

Vale, el error estaba en el while, tenía que poner while((cadena = br.readLine())!=null), y yo lo tenía sin el "cadena =", porque quería que la primera no la leyera, pero claro, no pensé que cada vez que hiciera una itineración del while se saltaría una linea, y en la última antes de null, entraría, y al ponerle cadena = br.readLine() ya daría null y por eso el error :P

Gracias por la ayuda ;)
En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
clase Stringtokenizer
Java
keplerrrrr 9 6,189 Último mensaje 10 Enero 2010, 21:31 pm
por Blitzkrieg'
Solución al error 0×80070646, error 646 y error 1606 al instalar actualizaciones
Noticias
wolfbcn 0 3,444 Último mensaje 11 Julio 2011, 20:39 pm
por wolfbcn
[MOD] Mensaje de error: Dma controller error - fatal error system halted « 1 2 »
Hardware
evgeni1970 14 21,193 Último mensaje 6 Noviembre 2011, 22:27 pm
por evgeni1970
Problema con StringTokenizer JAVA
Java
DonnieDarko2 1 2,082 Último mensaje 15 Abril 2012, 03:55 am
por raul_samp
Repetir StringTokenizer?
Java
Slider324 2 2,604 Último mensaje 11 Febrero 2013, 18:53 pm
por Slider324
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines