Ayuda con constructores y metodos.

Iniciado por jscrip, 3 Julio 2013, 04:27 AM

0 Miembros y 2 Visitantes están viendo este tema.

jscrip

Hola, tengo un problema con una clase en la cual hago una consulta de los datos contenidos en un arreglo: "int cannot be deferenced"

Esta es la clase con los constructores:

Código (java) [Seleccionar]
public class Persona {

   private String cedula;
   private String nombres;
   private String apellidos;
   private int edad;

   public Persona(String cedula, String nombres, String apellidos, int edad){
       this.cedula=cedula;
       this.nombres=nombres;
       this.apellidos=apellidos;
       this.edad=edad;
   }

   public Persona(){

   }

   /**
    * @return the cedula
    */
   public String getCedula() {
       return cedula;
   }

   /**
    * @param cedula the cedula to set
    */
   public void setCedula(String cedula) {
       this.cedula = cedula;
   }

   /**
    * @return the nombres
    */
   public String getNombres() {
       return nombres;
   }

   /**
    * @param nombres the nombres to set
    */
   public void setNombres(String nombres) {
       this.nombres = nombres;
   }

   /**
    * @return the apellidos
    */
   public String getApellidos() {
       return apellidos;
   }

   /**
    * @param apellidos the apellidos to set
    */
   public void setApellidos(String apellidos) {
       this.apellidos = apellidos;
   }

   /**
    * @return the edad
    */
   public int getEdad() {
       return edad;
   }

   /**
    * @param edad the edad to set
    */
   public void setEdad(int edad) {
       this.edad = edad;
   }

   public void imprimirInfoPersona(){
       System.out.println("Cedula: "+cedula);
       System.out.println("Nombres: "+nombres);
       System.out.println("Apellidos: "+apellidos);
       System.out.println("Edad: "+edad);
   }
}

Y esta es la clase de consultar:

//Clase que imprime un menu para consultar datos
public static void consulta(ArrayList registros){
       int op;
       do{                          
        do{
           Menu.imprimirMenuConsulta();        
           op = Ingreso.getInt("Ingrese la opción deseada:");
           if(op<0 || op>5)
               System.out.println("La opción ingresada es incorrecta");
       }while(op<0 || op>5);
       
       switch(op){
           case 1:
               String cedula = Ingreso.getString("Ingrese la cédula:");
               for(int i=0; i<registros.size();i++){
                   Persona p = (Persona)registros.get(i);
                   if(p.getCedula().contains(cedula))
                       p.imprimirInfoPersona();
               }
               
               break;
           case 2:
               String nombre = Ingreso.getString("Ingrese el nombre:");
               for(int i=0; i<registros.size();i++){
                   Persona p = (Persona)registros.get(i);
                   if(p.getNombres().toUpperCase().contains(nombre.toUpperCase()))
                       p.imprimirInfoPersona();
               }
               break;
           case 3:
               String apellido = Ingreso.getString("Ingrese el apellido:");
               for(int i=0; i<registros.size();i++){
                   Persona p = (Persona)registros.get(i);
                   if(p.getApellidos().toUpperCase().contains(apellido.toUpperCase()))
                       p.imprimirInfoPersona();
               }
               break;
           case 4:
               int edad = Ingreso.getInt("Ingrese la edad:");
               for(int i=0; i<registros.size();i++){
                   Persona p = (Persona)registros.get(i);
                   if(p.getEdad().contains(edad)) [b]//Aquí me manda el error int cannot be deferenced[/b]
                       p.imprimirInfoPersona();
               }
               break;    
           case 5:
                   for(int i=0; i<registros.size(); i++){
                       Persona p = (Persona)registros.get(i);
                       p.imprimirInfoPersona();                    
                   }
               break;    
           case 0:
               System.out.println("Regresando al menú principal...");
               break;        
       }
     }while(op!=0);  
   }


¿Saben cual es el error?
Gracias de antemano por su ayuda.

~ Yoya ~

#1
Código (java) [Seleccionar]
Persona p = (Persona)registros.get(i);
                   if(p.getEdad().contains(edad)) //Aquí me manda el error int cannot be deferenced
                       p.imprimirInfoPersona();


getEdad() retorna un int y por lo tanto es un dato primitivo y no puedes tratarlo como un objeto como lo haces. Y suponiendo que retorne un Integer (wrapper class) el método contains no existe.

Con esto bastaria:
Código (java,2) [Seleccionar]
Persona p = (Persona)registros.get(i);
                   if(p.getEdad() == edad) //Aquí me manda el error int cannot be deferenced
                       p.imprimirInfoPersona();
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

jscrip

Cita de: ~ Yoya ~ en  3 Julio 2013, 16:05 PM
Código (java) [Seleccionar]
Persona p = (Persona)registros.get(i);
                   if(p.getEdad().contains(edad)) //Aquí me manda el error int cannot be deferenced
                       p.imprimirInfoPersona();


getEdad() retorna un int y por lo tanto es un dato primitivo y no puedes tratarlo como un objeto como lo haces. Y suponiendo que retorne un Integer (wrapper class) el método contains no existe.

Con esto bastaria:
Código (java,2) [Seleccionar]
Persona p = (Persona)registros.get(i);
                   if(p.getEdad() == edad) //Aquí me manda el error int cannot be deferenced
                       p.imprimirInfoPersona();


Vaya, funcionó. Muchas gracias por la ayuda.