Cerrar Bienvenido
Cerrar Registrate

Ya somos 1.511.117 Forros navegando...

881 usuarios conectados | 1.511.117 forros | 370.583 temas | 4.393.154 mensajes | seremos forros, pero somos una bocha

YO Need Ayuda!!! JAVA Como diferenciar clases en un iterador? en el foro de Programación:


Nesecito ayuda amigos programadores.. La cuestion s esta... Tengo un iterador q reccore un ArraIlist de Telefonos celulares y fijos.. osea la clase celulares y fijo .. heredan de telefon las basicas y de ahi se dividen... el problema se da cuando... tengo q contar cuantos telefonos celulares tengo en el ArrayList este es el codigo q precariamente se me ocurrio public int cantCel() { int con = 0; Celular cel = new Celular(); Iterator i = tel.iterator(); while(i.hasNext()) { cel = (Celular)i.next(); ------------------- if(cel.reto()) con++; } return con; } el wacho anda pero solo si son celulares los q ...

Datos del Tema
Creado el 27.08.07 a las 10:47
  • 0 Votos
  • 0
    Favoritos
  • 637
    Visitas
  • 1
    Mensajes
¡Tema agregado a Favoritos!
Ya tienes este tema en Favoritos
Error
¡Buen Tema!0 Votos Disponibles
¡Tu voto ha sido enviado!
Ya has votado por este tema
[Error]
No puedes votar tu propio tema
No puedes votar a usuarios baneados
No puedes votar en un tema cerrado
Viejo 27.08.07, 10:47
Nesecito ayuda amigos programadores..

La cuestion s esta...

Tengo un iterador q reccore un ArraIlist de Telefonos celulares y fijos.. osea la clase celulares y fijo .. heredan de telefon las basicas y de ahi se dividen...

el problema se da cuando... tengo q contar cuantos telefonos celulares tengo en el ArrayList

este es el codigo q precariamente se me ocurrio

public int cantCel()
{
int con = 0;
Celular cel = new Celular();
Iterator i = tel.iterator();
while(i.hasNext())
{
cel = (Celular)i.next(); -------------------
if(cel.reto())
con++;
}
return con;
}


el wacho anda pero solo si son celulares los q cargo.. si meto un fijo en algun momento de la carga de datos.. a la hora de ejecutar la cuenta da una execpcion
por q como ven ahi a la variable cel q es de tipo Celular si el iteador se encuentra con un objeto Fijo causa error al forzar a q se combierta en un tipo cel..

Pregunta: Como puedo hacer para diferenciar si un iterador esta apuntando a un objeto tipo Celular o Fijo? osea, preguntar si es Fijo no hace nada, si es Celular q mande el contador

Nota: el metodo cel.reto() solamente manda true para q pase el if pero obiamente esta mal tambien

espero q alguien me pueda responder ^^

Salutes!!
FOTOLOG ____ METROFLoG ....
Viejo 27.08.07, 23:03
Bueno no entiendo muy bien como incializas el iterador... Igual para saber si un determinado objeto es instancia de una determinada clase tenes que utilizar el operador instanceof : por ej

Object obj=i.next();

if (obj instanceof Celular)
cel++;
(fijate que cuando accedo al elemento del iterador no haga casting; si lo hiciera estaria en el mismo problema)
Supongo que el iteraodor te retorna sintacticamete un Object; si despues queres hacer un casting a una determinada clase tenes que asegurarte antes de que este casting no te tire un error:

Object obj=i.next();
Celular c;
if (obj instanceof Celular)
c=(Celular) obj ;// ESTE CASTING ES SEGURO, NUNCA TE PUEDE TIRAR UN ERROR
else
//aca lo manejar vos, pero seguro que a obj no lo vas a poder tratar como celular

si no haces el test antes te puede tirar un error dependiendo del clase real del objeto.
Bueno, fijate en la documentacion de instanceof para estar mas seguro porque yo hace rato que no toco una linea de java (tambien hay otras operadores o funciones para testear si una determinada clase es superclase/subclase de otra y cosas asi; la clase de cualquier objeto se obtiene con el metodo getclass o algo asi; como ves no me acuerdo mucho los detalles )

Herramientas Buscar en este tema
Buscar en este tema:

Búsqueda avanzada
Iniciar Sesion

Recordarme

Top de Usuarios

    ElServer