Dúvida referente carregamento e impressão de arquivo dat

Boa tarde!

Estou com problema pra finalizar um projeto,

1º eu crio um objeto - ok
2º eu salvo o objeto criado em dat- ok
3º eu carrego os arquivos criados no dat,
4º Eu imprimo todos os objetos armazenados no dat.

As duas últimas partes aparentemente não estão funcionando, porém como não esta apresentando nenhum erro não estou conseguindo identificar o que esta acontecendo.

package menu;

import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import java.io.EOFException;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Menu {

public static void main(String[] args) {
    Cilindro cil;
    Cone con;
    EquacaoDoSegundoGrau equ;
    Paralelepipedo par;
    Ponto pon;
    Triangulo tri;

    // Listas pra armazenar os valores
    List<Ponto> guardarPon = new ArrayList<>();
    List<Triangulo> guardarTri = new ArrayList<>();
    List<Cone> guardarCon = new ArrayList<>();
    List<Cilindro> guardarCil = new ArrayList<>();
    List<Paralelepipedo> guardarPar = new ArrayList<>();
    List<EquacaoDoSegundoGrau> guardarEqu = new ArrayList<>();

    //Escolhe qual forma deseja criar
    String opcao = "Sim";
    while ("Sim".equals(opcao) || "sim".equals(opcao) || "SIM".equals(opcao)) {
        int escolha;
        escolha = Integer.parseInt(
                JOptionPane.showInputDialog(null, "O que deseja realizar? \n "
                        + "Digite 1 para carregar os objetos criados \n "                            
                        + "Digite 2 para criar um Ponto\n "
                        + "Digite 3 para criar um Triangulo\n "
                        + "Digite 4 para criar um Cone\n "
                        + "Digite 5 para criar um Cilindo\n "
                        + "Digite 6 para criar um Paralelepipedo\n "
                        + "Digite 7 para criar uma Equação de Segundo grau\n "
                        + "Digite 8 para salvar os objetos criados \n "
                        + "Digite 9 para imprimir os objetos criados"));

        switch (escolha) {
            
            case 1:
                carregar("pon.dat", guardarPon);
                carregar("tri.dat", guardarTri);
                carregar("con.dat", guardarCon);
                carregar("cil.dat", guardarCil);
                carregar("par.dat", guardarPar);
                carregar("equ.dat", guardarEqu); 
                break;
                
            case 2:
                // criar objeto
                pon = new Ponto();
                // guardar ele em uma lista
                guardarPon.add(pon.lerDadosXY());
                break;

            case 3:
                tri = new Triangulo();
                guardarTri.add(tri.lerDadosTriangulo());
                break;

            case 4:
                con = new Cone();
                guardarCon.add(con.lerDadosCone());                
                break;

            case 5:
                cil = new Cilindro();
                guardarCil.add(cil.lerDadosCilindro());
                break;

            case 6:
                par = new Paralelepipedo();
                guardarPar.add(par);
                break;

            case 7:
                equ = new EquacaoDoSegundoGrau();
                guardarEqu.add(equ.lerDadosEquacaoDoSegundoGrau());
                break;
                
            case 8:
                salvar("pon.dat", guardarPon);
                salvar("tri.dat", guardarTri);
                salvar("con.dat", guardarCon);
                salvar("cil.dat", guardarCil);
                salvar("par.dat", guardarPar);
                salvar("equ.dat", guardarEqu);
                break;
                
            case 9:
                // Imprimir todas as formas criadas na tela
                System.out.println("Pontos criados:");
                for (int i = 0; i < guardarPon.size(); i++) {
                    try {
                        System.out.println(guardarPon.get(i).getX() + " " + guardarPon.get(i).getY());
                    } 
                    catch (Exception e){
                        System.out.println(e.getMessage());
                        }
                }
                
                System.out.println("Triângulos criados:");            
                for (int i = 0; i < guardarTri.size(); i++) {
                    try {
                        System.out.println(guardarTri.get(i).getBase() + " " + guardarTri.get(i).getAltura() + " " + guardarTri.get(i).getArea() + " " + guardarTri.get(i).getPerimetro());
                    }
                    catch(Exception e){
                        System.out.println(e.getMessage());
                    }
                }
                
                System.out.println("Cones criados:");                 
                for (int i = 0; i < guardarCon.size(); i++) {
                    try{
                        System.out.println(guardarCon.get(i).getRaiobase() + " " + guardarCon.get(i).getAltura() + " " + guardarCon.get(i).getPerimetro());
                    }
                    catch(Exception e){
                        System.out.println(e.getMessage());
                    }
                }
                
                System.out.println("Cilindros criados:");                   
                for (int i = 0; i < guardarCil.size(); i++) {
                    try{
                        System.out.println(guardarCil.get(i).getRaio() + " " + guardarCil.get(i).getAltura() + " " + guardarCil.get(i).getAreaTotal() + " " + guardarCil.get(i).getVolume());
                    }
                    catch(Exception e){
                        System.out.println(e.getMessage());
                    }
                }

                System.out.println("Paralelepípedos criados:");
                for (int i = 0; i < guardarPar.size(); i++) {
                    try{
                        System.out.println(guardarPar.get(i).getAltura() + " " + guardarPar.get(i).getLargura() + " " + guardarPar.get(i).getComprimento() + " " + guardarPar.get(i).getVolume());
                    }
                    catch(Exception e){
                        System.out.println(e.getMessage());
                    }
                }

                System.out.println("Equações do Segundo Grau criadas:");
                for (int i = 0; i < guardarEqu.size(); i++) {
                    try{
                        System.out.println(guardarEqu.get(i).getA() + " " + guardarEqu.get(i).getB() + " " + guardarEqu.get(i).getC() + " " + guardarEqu.get(i).getDelta() + " " + guardarEqu.get(i).getX1() + " " + guardarEqu.get(i).getX2());
                    }
                    catch(Exception e){
                        System.out.println(e.getMessage());
                    }
                }                   
                break;             

            default:
                System.out.println("Opcão escolhida incorreta, selecione conforme indicador no menu");

        }

        opcao = JOptionPane.showInputDialog("Deseja realizar outra Operação? ( ''Sim'' para continuar)");

    }



}



public static boolean salvar (String document, List arl) {
        try{
            FileOutputStream fos = new FileOutputStream(document); 
            ObjectOutputStream out = new ObjectOutputStream(fos);
            for (int i=0; i<arl.size(); i++) {
                out.writeObject( arl.get(i) );
            }
            out.close();
            fos.close();
        } catch(Exception ex){
               JOptionPane.showMessageDialog(null, "Erro salvando objetos... " + ex.getMessage());
               return false;
        }
        return true; 
}

public static boolean carregar (String document, List arl) {
        FileInputStream fis;
        ObjectInputStream in;       
        try{
            fis = new FileInputStream(document);
            in = new ObjectInputStream(fis);
            arl.clear();
            boolean sair = false; 
            do {                
                 try {
                     Object info = in.readObject();
                     arl.add(info);
                  }
                  catch (EOFException normalEof) { 
                     sair=true;
                  }            
            } while (!sair);            
            in.close();
            fis.close();
        } catch(Exception e){
            JOptionPane.showMessageDialog(null, "Erro carregando objetos... " + e.getMessage());
            return false;
        }
        return true;     
}  

}