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 :
public static void abrirArchivo(){
File f1 = new File("."+SEPARATOR+"archivos"+SEPARATOR+"rol.csv");
String cadena = "";
String[] elementos = new String[8];
try{
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);
while(br.readLine()!=null){
cadena = br.readLine();
StringTokenizer st = new StringTokenizer(cadena, ",");
int i = 0;
while(st.hasMoreElements()){
elementos[i] = (String)st.nextElement();
i++;
}
personajes.add(new Personaje(elementos[1], elementos[2], elementos[3], elementos[4],
Integer.parseInt(elementos[5]), Integer.parseInt(elementos[6]), Integer.parseInt(elementos[7])));
}
br.close();
fr.close();
}catch(Exception e){
e.printStackTrace();
}
}
Un abrazo.
EDITO: La linea del error es esta : StringTokenizer st = new StringTokenizer(cadena, ",");
Intenta así.
Hice unas pequeñas modificaciones a tu código.
public void abrirArchivo(String archivo){
File f1 = new File(archivo);
if(f1.exists()) {
String cadena = "";
StringTokenizer st = null;
int tokenNumber = 0;
String[] elementos = new String[8];
try{
FileReader fr = new FileReader(f1);
BufferedReader br = new BufferedReader(fr);
while((cadena = br.readLine()) != null){
st = new StringTokenizer(cadena, ",");
while(st.hasMoreElements()) {
tokenNumber++;
elementos[tokenNumber] = (String)st.nextElement();
}
tokenNumber = 0;
System.out.println(elementos[1]+"-"+elementos[2]+"-"+elementos[3]+"-"+elementos[4]+"-"+elementos[5]+"-"+elementos[6]+"-"+elementos[7]);
//personajes.add(new Personaje(elementos[1], elementos[2], elementos[3], elementos[4],
//Integer.parseInt(elementos[5]), Integer.parseInt(elementos[6]), Integer.parseInt(elementos[7])));
}
br.close();
fr.close();
}catch(Exception e){
e.printStackTrace();
}
}else {
System.out.println("No se encontro el archivo");
}
}
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 ;)