Java - problemas serializable

 
Vista:
sin imagen de perfil

problemas serializable

Publicado por nuke (2 intervenciones) el 03/10/2017 13:25:20
con este codigo todo bien, el fallo es que imprime dos null al final que no deberia. alguien que pueda echarme una mano? Adjunto una imagen de los null. el codigo que no muestro es la clase asignatura la cual solo tiene metodos getter y setter


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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import java.io.Serializable;
import java.util.*;
import java.io.*;
public class ejercicio_Brian_perez_7 {
	public static void rellenarLista(ArrayList<Asignatura> clase) {
        Scanner teclado = new Scanner(System.in);
        String respuesta = "no";
        do {
            clase.add(new Asignatura());
 
 
            System.out.println("¿Desea introducir otra asignatura?");
            respuesta = teclado.nextLine();
        } while (respuesta.equalsIgnoreCase("Si"));
 
        System.out.println("***** Notas almacenadas en la lista *****");
    }
 
	public static void crearFichero(ArrayList<Asignatura> clase) {
        FileOutputStream as = null;
        try {
            File fichero = new File("D:\\fichero.obj");
            as = new FileOutputStream(fichero);
            ObjectOutputStream bs = new ObjectOutputStream(as);
            escribirFichero(bs, clase);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (as != null) {
                    as.close();
                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }
	public static void escribirFichero(ObjectOutputStream bs,  ArrayList<Asignatura> curso)throws Exception{
 
        System.out.println(".................. Volcando la lista al fichero ................");
 
        for (int i = 0; i < curso.size(); i++) {
            bs.writeObject(curso.get(i));
        }
        System.out.println("***** Volcado finalizado con exito *****");
    }
	 public static void calcularMedia(ObjectInputStream obj) throws Exception {
	        Asignatura clase;
	        double media = 0;
	        double mediaFinal;
	        int contador = 0;
	        System.out.println(" ...calculando media....");
	        try {
	            while (true) {
	                clase = (Asignatura) obj.readObject();
	                media = media + clase.getNota();
	                contador++;
 
	            }
 
	        } catch (Exception e) {
	        	System.out.println(e.getMessage());
	        }
	        mediaFinal = media / contador;
	        System.out.println("Su nota media del curso es de: " + mediaFinal);
	    }
	public static void leerFichero() {
		FileInputStream fich = null;
 
        try {
            File fichero = new File("fichero.obj");
            fich = new FileInputStream(fichero);
            ObjectInputStream obj = new ObjectInputStream(fich);
            mostrarFichero(obj);
 
        } catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (fich != null) {
                    fich.close();
 
                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }
	public static void lecturaCalculo() {
		FileInputStream fich = null;
        try {
            File fichero = new File("fichero.obj");
            fich = new FileInputStream(fichero);
            ObjectInputStream obj = new ObjectInputStream(fich);
 
            calcularMedia(obj);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            try {
                if (fich != null) {
                    fich.close();
                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
        }
    }
	public static void mostrarFichero(ObjectInputStream obj) throws Exception {
        Asignatura clase;
        System.out.println(" ...Leyendo el fichero.....");
        while (true) {
            clase = (Asignatura) obj.readObject();
            System.out.println("Asignatura: " + clase.getNombre());
            System.out.println("Nota: " + clase.getNota());
            }
 
        }
	public static void main(String[] args) {
        ArrayList<Asignatura> clase = new ArrayList();
        rellenarLista(clase);
        crearFichero(clase);
        leerFichero();
        lecturaCalculo();
 
    }
}
asdas
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