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

Ayuda Busqueda

Estas en el tema de Ayuda Busqueda en el foro de Java en Foros del Web. Tengo un problema con una busqueda. public Comparable buscar(Comparable x) { if(x == null || (frente != null && frente.getInfo().getClass() != x.getClass())) return null; Nodo ...
  #1 (permalink)  
Antiguo 24/05/2007, 14:38
 
Fecha de Ingreso: mayo-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Exclamación Ayuda Busqueda

Tengo un problema con una busqueda.
public Comparable buscar(Comparable x)
{
if(x == null || (frente != null && frente.getInfo().getClass() != x.getClass())) return null;
Nodo p = frente;
while (p != frente)
{
if (x.compareTo(p.getInfo()) == 0)
{
return p.getInfo();
}
p= p.getNext();
}
return null;
}
La insercion funciona perfectamente , me muestra bien la informacion etc.
Cuando busco siempre me retorna null.
La primer linea de codigo:
if(x == null || (frente != null && frente.getInfo().getClass() != x.getClass())) return null;
Me permite controlar ciertas cosas sobre lo que va a entrar a la busqueda , eso funciona bien porque si lo comento me sigue saliendo null cuando busco.
Los objetos que busco tienen implementado Comparable por lo tanto el problema tampoco es ese .
Si alguno me tira una soga se lo voy a agradecer.
Saludos.
  #2 (permalink)  
Antiguo 25/05/2007, 04:33
Avatar de elAntonie  
Fecha de Ingreso: febrero-2007
Mensajes: 894
Antigüedad: 17 años, 2 meses
Puntos: 10
Re: Ayuda Busqueda

Cita:
Iniciado por jmbertolotti Ver Mensaje
Tengo un problema con una busqueda.
public Comparable buscar(Comparable x)
{
if(x == null || (frente != null && frente.getInfo().getClass() != x.getClass())) return null;
Nodo p = frente;
while (p != frente)

{
if (x.compareTo(p.getInfo()) == 0)
{
return p.getInfo();
}
p= p.getNext();
}
return null;
}
La insercion funciona perfectamente , me muestra bien la informacion etc.
Cuando busco siempre me retorna null.
La primer linea de codigo:
if(x == null || (frente != null && frente.getInfo().getClass() != x.getClass())) return null;
Me permite controlar ciertas cosas sobre lo que va a entrar a la busqueda , eso funciona bien porque si lo comento me sigue saliendo null cuando busco.
Los objetos que busco tienen implementado Comparable por lo tanto el problema tampoco es ese .
Si alguno me tira una soga se lo voy a agradecer.
Saludos.

Wenas

Es que ni siquiera entra en el while

Nodo p = frente;
while (p != frente)

Asi que logicamente siempre devuelve null. Si usas esa condiccion lo logico es que uses un do -while.

Nodo p= frente;
do
{
vblablabla
p= next;
}while (p!=frente)

Saludos.

Pd. de todos modos yo no usaria los return dentro de un bucle. Usaria una variable auxiliar para saber si tengo que salir o no, y haria algo del estilo

p = frente;
encontrado = false
Nodo adevolver = null;
while (!encontrado && p!=final)
{
si son iguales encontrado = true;
sino p=next;
}

y se saldria del bucle bien porque ha llegado al final de la lista o bien porque lo ha encontrado
Si es por lo ultimo
if (encontrado)
adevolver = p;

return adevolver;

Es una idea.

Última edición por elAntonie; 25/05/2007 a las 04:39
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 13:39.