Ver Mensaje Individual
  #4 (permalink)  
Antiguo 26/07/2013, 08:15
Avatar de Krain
Krain
 
Fecha de Ingreso: julio-2013
Ubicación: Valencia
Mensajes: 60
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Error en uno de mis programas

Hola amigo, antes de nada en java por convenio de estilo (o un nombre así, corregidme si esta mal dicho) los nombres de las variables van en minúsculas y sin acentos, y las mayúsculas solo se usan para las clases y para separar palabras.

En el método de crear, no es que este mal pero yo lo haría creando una persona/estudiante con un constructor con parámetros en vez de crearlo vació e ir seteando.


En el método de mostrar te tirara error seguro, tienes que usar el toString().

Bueno aquí te dejo el programa a ver si es lo que buscabas.


Código Java:
Ver original
  1. package Obligatorio;
  2. import java.util.ArrayList;
  3. import java.util.Scanner;
  4.  
  5. public class Persona
  6. {
  7.     protected Scanner teclado = new Scanner (System.in);
  8.     protected String cedula;
  9.     protected String nombre;
  10.     protected String apellido;
  11.     protected int telefono;
  12.     protected int op;
  13.     protected boolean op1;
  14.     protected ArrayList <Persona> personas = new ArrayList();
  15.  
  16.     public Persona(){
  17.        
  18.     }
  19.     public Persona(String cedula, String nombre, String apellido, int telefono)
  20.     {
  21.         this.cedula = cedula;
  22.         this.nombre = nombre;
  23.         this.apellido = apellido;
  24.         this.telefono = telefono;
  25.     }
  26.     public void registrarPersona()
  27.     {
  28.         System.out.println("Ingrese la Cédula: ");
  29.         String cedula = teclado.next();
  30.         System.out.println("Ingrese el Nombre: ");
  31.         String nombre = teclado.next();
  32.         System.out.println("Ingrese el Apellido: ");
  33.         String apellido = teclado.next();
  34.         System.out.println("Ingrese el Teléfono: ");
  35.         int telefono = teclado.nextInt();        
  36.         personas.add(new Persona(cedula, nombre, apellido, telefono));
  37.     }      
  38.     public void registrarOtro()
  39.     {          
  40.         op1 = true;          
  41.         do
  42.         {
  43.             System.out.println("Desea Registrar Otro?");
  44.             System.out.println("1 - Si, 2 - No");
  45.             op = teclado.nextInt();
  46.             if(op != 1 && op != 2)
  47.             {
  48.                 System.out.println("Error, debe indicar una de las opciones...");
  49.                 op1 = false;  
  50.             }    
  51.         }
  52.         while(op1 == false);
  53.     }
  54.     public void mostrarPersonas()
  55.     {          
  56.         for (Persona p: personas)
  57.         {
  58.             System.out.println(p.toString());
  59.         }          
  60.     }
  61.     @Override
  62.     public String toString()
  63.     {
  64.         return "C.I.: " + cedula + "\n" + "Nombre: " + nombre + "\n" + "Apellido: " + apellido + "\n" + "Teléfono: " + telefono + "\n" + "============================================================" + "\n";
  65.     }
  66.     public void setCedula(String cedula)
  67.     {
  68.         this.cedula = cedula;
  69.     }
  70.     public void setNombre(String nombre)
  71.     {
  72.         this.nombre = nombre;
  73.     }
  74.     public void setApellido(String apellido)
  75.     {
  76.         this.apellido = apellido;
  77.     }
  78.     public void setTelefono(int telefono)
  79.     {
  80.         this.telefono = telefono;
  81.     }
  82.     public String getCedula()
  83.     {
  84.         return cedula;
  85.     }
  86.     public String getNombre()
  87.     {
  88.         return nombre;
  89.     }
  90.     public String getApellido()
  91.     {
  92.         return apellido;
  93.     }
  94.     public int getTelefono()
  95.     {
  96.         return telefono;
  97.     }      
  98. }


Código Java:
Ver original
  1. package Obligatorio;
  2. import java.util.ArrayList;
  3.  
  4. public class Estudiante extends Persona
  5. {      
  6.     ArrayList <Persona> estudiantes = new ArrayList();    
  7.     String grupo;
  8.      
  9.     public Estudiante(){
  10.        
  11.     }
  12.     public Estudiante(String cedula, String nombre, String apellido, int telefono, String grupo)
  13.     {
  14.         this.cedula = cedula;
  15.         this.nombre = nombre;
  16.         this.apellido = apellido;
  17.         this.telefono = telefono;
  18.         this.grupo = grupo;                      
  19.     }
  20.     public void registrarEstudiante()
  21.     {
  22.         do
  23.         {
  24.             System.out.println("====================Registrar Estudiante====================");
  25.             System.out.println("Ingrese la Cédula: ");
  26.             String cedula = teclado.next();
  27.             System.out.println("Ingrese el Nombre: ");
  28.             String nombre = teclado.next();
  29.             System.out.println("Ingrese el Apellido: ");
  30.             String apellido = teclado.next();
  31.             System.out.println("Ingrese el Teléfono: ");
  32.             int telefono = teclado.nextInt();                    
  33.             System.out.println("Ingrese el Grupo: ");
  34.             String grupo = teclado.next();
  35.             estudiantes.add(new Estudiante(cedula, nombre, apellido, telefono, grupo));
  36.             registrarOtro();
  37.         }
  38.         while(op == 1);        
  39.         System.out.println("Eligió Salir");
  40.     }      
  41.     public void mostrarEstudiantes()
  42.     {          
  43.         for (Persona e: estudiantes)
  44.         {
  45.             System.out.println(e.toString());
  46.         }          
  47.     }
  48.     @Override
  49.     public String toString()
  50.     {
  51.         return "C.I.: " + cedula + "\n" + "Nombre: " + nombre + "\n" + "Apellido: " + apellido + "\n" + "Teléfono: " + telefono + "\n" + "Grupo: " + grupo + "\n" + "============================================================" + "\n";
  52.     }            
  53.     public void setGrupo(String grupo)
  54.     {
  55.         this.grupo = grupo;
  56.     }
  57.     public String getGrupo()
  58.     {
  59.         return grupo;
  60.     }
  61. }



Código Java:
Ver original
  1. package Obligatorio;
  2.  
  3. import java.util.Scanner;
  4.  
  5. public class Main
  6. {
  7.     public static void main(String[]args)
  8.     {
  9.         Scanner tec = new Scanner(System.in);
  10.         Estudiante e = new Estudiante();
  11.         int menu = 0;
  12.         do
  13.         {
  14.             System.out.println("Pulsa 1 para registrar un profesor");
  15.             System.out.println("Pulsa 2 para registrar un estudiante");
  16.             System.out.println("Pulsa 3 para ver la lista de los profesores");
  17.             System.out.println("Pulsa 4 para ver la lista de los alumnos");
  18.             System.out.println("Pulsa 0 para salir");
  19.             menu = tec.nextInt();
  20.             switch(menu)
  21.             {
  22.                 case 1:
  23.                     e.registrarPersona();
  24.                     break;
  25.                 case 2:
  26.                     e.registrarEstudiante();
  27.                     break;
  28.                 case 3:
  29.                     e.mostrarPersonas();
  30.                     break;
  31.                 case 4:
  32.                     e.mostrarEstudiantes();
  33.                     break;
  34.                 case 0:                    
  35.                     break;
  36.                 default:
  37.                     System.out.println("Opcion no válida");
  38.             }
  39.         }
  40.         while(menu != 0);
  41.     }
  42. }

A mi con esto me tira bien el crear personas y estudiantes cada uno en un arraylist diferente y mostrarlos todos. Incluso si solo quisieras mostrar nose, por ejemplo el apellido solo tendrias que crear un metodo que fuera:


Código Java:
Ver original
  1. public void mostrarEstudiantesApellido()
  2.     {          
  3.         for (Persona e: estudiantes)
  4.         {
  5.             System.out.println(e.getApellido());
  6.         }          
  7.     }

si quieres otra cosa solo seria ir creando este método cambiando el e.getApellido() por lo que quieras mostrar.

Espero haberte ayudado.
Edit: Editado para dar colorines al codigo.

Última edición por Krain; 26/07/2013 a las 08:22