Java - Listas que se sobreescriben ayuda

 
Vista:

Listas que se sobreescriben ayuda

Publicado por Raul (1 intervención) el 15/12/2016 13:22:47
Hola buenas, tengo aquí un gran problema este trozo de codigo lee datos de un fichero
pero a la hora de guardarlos en el switch de abajo cada una de las asignaturas que se guardan se sobreescriben con la ultima que se leyó ¿Alguna Idea? Gracias
Pd: la varible cursos so cuatro array list de asignaturas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
BufferedReader br;
StringBuilder sb = new StringBuilder();
String ruta_alumnado = ruta + File.separator + "Archivos de Texto" + File.separator + "Alumnado.txt";
Path ruta2 = Paths.get(ruta_alumnado);
String lectura;
String[] linea;
int[] pos = new int[3];
boolean primerait = true, modificar = false;
int i = 0, indcurso = 0, cont = 0, indalumnos = 0;
Asignatura as = new Asignatura();
try {
    br = new BufferedReader(new FileReader(ruta_alumnado));
    while ((lectura = br.readLine()) != null) {
        i = 0;
        linea = lectura.split("\t");
            indcurso = as.curso = Integer.parseInt(linea[i]);
            as.nombre = linea[i + 1];
            as.codigo = Long.parseLong(linea[i + 2]);
            as.creditos = Integer.parseInt(linea[i + 3]);
            as.caracter = linea[i + 4];
            as.departamento = linea[i + 5];
            as.periodicidad = Integer.parseInt(linea[i + 6]);
            as.fecha_ord = LocalDate.parse(linea[i + 7]);
            as.fecha_ext = LocalDate.parse(linea[i + 8]);
            mapa_asignaturas.put(as.codigo,as.nombre);
            lectura = br.readLine();
            i = 0;
            linea = lectura.split("\t");
            indalumnos = Integer.parseInt(linea[i]);
            i++;
            Alumno al = new Alumno();
            as.alumnos = new ArrayList<>();
            while (indalumnos > cont) {
                al.nombre = linea[i];
                al.apellidos = linea[i + 1];
                al.DNI = linea[i + 2];
                al.correo = linea[i + 3];
                pos = searchDNI(al.DNI);
                if (pos[0] > 0 && mapa_alumnos.containsKey(al.DNI)) {
                    as.alumnos.get(pos[2]).calificaciones_ordinarias.add(Float.parseFloat(linea[i + 4]));
                    as.alumnos.get(pos[2]).calificaciones_extraordinarias.add(Float.parseFloat(linea[i + 5]));
                    as.alumnos.get(pos[2]).asignaturas.add(as);
                } else {
                    as.alumnos.add(addSubjectsAndMarksFromFile(al, as,linea[i + 4],linea[i + 5]));
                    mapa_alumnos.put(al.DNI, al.nombre);
 
                }
                i = 0;
                cont++;
                if(cont!=indalumnos){
                lectura = br.readLine();
                linea = lectura.split("\t");
                }
                else{
                    break;
                }
 
            }
            cont = 0;
            pos[0] = 0;
 
            switch (indcurso) {
                case 1:
                    curso.primero.add(as);
                    break;
                case 2:
                    curso.segundo.add(as);
                    break;
                case 3:
                    curso.tercero.add(as);
                    break;
                case 4:
                    curso.cuarto.add(as);
                    break;
                default:
                    break;
            }
            indcurso=0;
        }
} catch (IOException e) {
    System.out.println("Error no se pudo encontrar el fichero en la ruta especificada " + e);
}
return true;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder