Búsqueda secuencial en array

Como están expertos quisiera saber si alguien puede pegarle un vistazo a mi método de búsqueda, ya que el mismo no me devuelve correctamente la intentar del elemento encontrado. Mi método es el siguiente:
private void Busqueda_4(int t)
{
System.out.println("\n Metodo con variable logica");
boolean encontrado = false;
int i = 0;
while(encontrado ==false && i < vector.length)
{
if (vector == t)
encontrado = true;
else
i = i + 1;
}
if (encontrado == true)
System.out.println("El número ocupa el lugar " + i);
else
System.out.println("El número no está en el vector");
}
Es decir si el elemento que busco esta en la intentar 0, 1 o donde este, el método siempre me devuelve que esta en la intentar de la cantidad de elementos del vector.
Es decir si yo introduzco tres elementos en un vector, y el elemento que busco esta en la intentar 0,1 o 2 el método siempre devuelve:
El número ocupa el lugar 3
Espero que me hayan entendido, el método si o si lo tengo que realizar con while ya que tengo que tener una variante al for,
Respuesta
1
no es necesario que hagas un while y te compliques la existencia, con un simple for y un if se arregla el asunto, mira esto
public static void main(String[] args) {
String[] vec=new String[10];
vec[0]="A";
vec[1]="B";
vec[2]="C";
vec[3]="D";
vec[4]="E";
vec[5]="F";
vec[6]="G";
vec[7]="H";
vec[8]="I";
vec[9]="K";
//vamos a buscar un elemento dentro del vector
int posicion=busca(vec,"G");//metodo que busca algo dentro de un vector
if(posicion==-1) System.out.println("No se encontro el valor dentro del vector");
else System.out.println("El elemento se encuentra en la posicion: "+posicion);
}
private static int busca(String[] vec, String valor) {
int posicion=0;
for(int i=0;i<vec.length;i++){
if(vec.equals(valor)) return posicion;
posicion++;
}
return -1;
}
Muchas gracias por tu respuesta es justamente la solución que teanía con fro, al final como me exigían una busque da con while la implemente así:
private void Busqueda_5(int t)
{
System.out.println("\nBusqueda 5");
int i = 0;
boolean encontrado = false;
while(i < vector.length)
{
if (vector == t)
{
encontrado = true;
System.out.println("El numero ocupa el lugar: " + i);
}
i = i + 1;
}
if(encontrado == false)
System.out.println("El número no está en el vector");
}
Muchas gracias por responder, antes de calificarte excelente por tu respuesta quisiera consultarte si sabes de como implementar una búsqueda con centinela en java ya que yo lo he hecho con otros lenguajes y es fácil ya que puedo redimensionar los vectores pero en java no he podido ya que tengo entendido que no se puede redimensionar un vector, ¿tu qué crees?
¿Búsqueda con centinela? La verdad nunca he escuchado la búsqueda con centinela...
Claro que se puede redimensionar un vector, pero debes pasar todo el contenido a otro vector y luego volverlo a definir... y pasar el contenido del vector auxiliar al vector redimensionado.
Lo que yo hago es lo siguiente, creo un vector de indice 1024 y un contador. Mientras recorro el vector aumento el contador, y así voy haciendo la búsqueda y cuando encuentro le hago un break al for o un return al método y termino con la intentar definida en el contador.
¿Centinela... que sera centinela... me dices que eso?
¿Te interesaría finalizar la pregunta o tienes alguna duda más por preguntar? ¡
Hola disculpa la tardanza pero no tenia red. Lo de centinela quiere decir que agregas al vector al elemento buscado en la ultima posición o sea que el centinela sería por ejemplo para una matriz A, A[n + 1] y se le asigna el valor buscado. Si el indice alcanza el valor n + 1, supondría que el argumento no pertenece al vector y la búsqueda no tiene éxito. Muchas gracias por tu respuesta y disculpa la demora!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas