Foros del Web » Programación para mayores de 30 ;) » Java »

Error en uno de mis programas

Estas en el tema de Error en uno de mis programas en el foro de Java en Foros del Web. Hola a todos, bueno, les cuento: Tengo que hacer un programa que permita que se registren estudiantes, y que luego se puedan mostrar. Debe ser ...
  #1 (permalink)  
Antiguo 24/07/2013, 15:29
 
Fecha de Ingreso: julio-2013
Mensajes: 7
Antigüedad: 10 años, 9 meses
Puntos: 0
Error en uno de mis programas

Hola a todos, bueno, les cuento:

Tengo que hacer un programa que permita que se registren estudiantes, y que luego se puedan mostrar. Debe ser con ArrayList. Hasta ahora voy haciendo esto:


CLASE PERSONA
Código PHP:
package Obligatorio;
import java.util.Scanner;

public class 
Persona {
    
    
Scanner Teclado = new Scanner (System.in);

    
Persona Persona = new Persona();

    
String Cédula;
    
String Nombre;
    
String Apellido;
    
int Teléfono;
    
int Op;
    
boolean Op1;


    public 
Persona(){
            
Cédula "";
            
Nombre "";
            
Apellido "";
            
Teléfono 0;

    }
    
    public 
void setCédula(String Cédula){
            
this.Cédula Cédula;
    }
    public 
void setNombre(String Nombre){
            
this.Nombre Nombre;
    }
    public 
void setApellido(String Apellido){
            
this.Apellido Apellido;
    }
    public 
void setTeléfono(int Teléfono){
            
this.Teléfono Teléfono;
    }
    public 
String getCédula(){
            return 
this.Cédula;
    }
    public 
String getNombre(){
            return 
this.Nombre;
    }
    public 
String getApellido(){
            return 
this.Apellido;
    }
    public 
int getTeléfono(){
            return 
this.Teléfono;
    }
    
    
//Métodos
    
    
public void RegistrarPersona(){
    

        
        
System.out.println("Ingrese la Cédula: ");
        
Persona.setCédula(Teclado.next());
        
System.out.println("Ingrese el Nombre: ");
        
Persona.setNombre(Teclado.next());
        
System.out.println("Ingrese el Apellido: ");
        
Persona.setApellido(Teclado.next());
        
System.out.println("Ingrese el Teléfono: ");
        
Persona.setTeléfono(Teclado.nextInt());
    }
    
    public 
void RegistrarOtro(){
        
        
Op1 true;
        
        do {
        
        
System.out.println("Desea Registrar Otro?");
        
System.out.println("1 - Si, 2 - No");
        
Op Teclado.nextInt();
        
        if(
Op != && Op != 2){
            
            
System.out.println("Error, debe indicar una de las opciones...");
            
Op1 false;
            
        }
        
        }while(
Op1 == false);

    }
    

CLASE ESTUDIANTE
Código PHP:
package Obligatorio;

import java.util.ArrayList;

public class 
Estudiante extends Persona {
    
    
ArrayList <PersonaEstudiantes = new ArrayList <Persona>();
    
    
String Grupo;
    
    public 
Estudiante(){
        
Grupo "";
    }
    
    public 
void setGrupo(String Grupo){
        
this.Grupo Grupo;
    }
    public 
String getGrupo(){
        return 
this.Grupo;
    }
    
    
//Métodos
    
    
public void RegistrarEstudiante(){
        
        
        do{
        
System.out.println("====================Registrar Estudiante====================");
        
RegistrarPersona();
        
System.out.println("Ingrese el Grupo: ");
        ((
EstudiantePersona).setGrupo(Teclado.next());
        
        
Estudiantes.add(Persona);
        
        
RegistrarOtro();
        
        }while(
Op == 1);
        
        
System.out.println("Eligió Salir");
        
Menú objMenu = new Menú ();
        
objMenu.Menu();
    }
    
    public 
void MostrarEstudiantes(){
        
        for (
int i 0Estudiantes.size(); i++){
            
            
System.out.println("============================================================");
            
System.out.println("C.I.: "+Persona.getCédula());
            
System.out.println("Nombre: "+Persona.getNombre());
            
System.out.println("Apellido: "+Persona.getApellido());
            
System.out.println("Teléfono: "+Persona.getTeléfono());
            
System.out.println("Grupo: "+((Estudiante)Persona).getGrupo());
        }
        
    }

Estas clases luego las invoco desde otra clase main. La clase Persona está porque además de Estudiantes debo registrar Profesores entonces uso a la Herencia para ahorrar código.

Bueno el problema que me da es cuando declaro el objeto Persona

Código PHP:
Persona Persona = new Persona(); 
La verdad es que no entiendo por que me da ese error, soy nuevo en esto de Java, espero que me puedan responder la duda.

Gracias :D
  #2 (permalink)  
Antiguo 25/07/2013, 05:14
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Error en uno de mis programas

En general tu código es un descalabro, y cuando aparece un error viene además la descripción del error, que te sirve a ti para saber qué está pasando y para que los demás puedan ayudarte.

Tengo un error aquí sin más información, sólo sirve para que la gente tenga que hacer suposiciones a menos que el error sea muy evidente.

Lee la descripción y si no te llega, postéala en el foro.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 25/07/2013, 11:06
Avatar de calichecal  
Fecha de Ingreso: junio-2009
Ubicación: Colombia
Mensajes: 288
Antigüedad: 14 años, 10 meses
Puntos: 12
Respuesta: Error en uno de mis programas

Xerelo tiene razón, muéstranos el error que arroja la consola.
__________________
Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: la voluntad. -Einstein-
  #4 (permalink)  
Antiguo 26/07/2013, 08:15
Avatar de Krain  
Fecha de Ingreso: julio-2013
Ubicación: Valencia
Mensajes: 60
Antigüedad: 10 años, 9 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

Etiquetas: clase, programa, programas, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:06.