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:
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.
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:
Persona p = (Persona)registros.get(i);
if(p.getEdad() == edad) //Aquí me manda el error int cannot be deferenced
p.imprimirInfoPersona();
Cita de: ~ Yoya ~ en 3 Julio 2013, 16:05 PM
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:
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.