Autor Tema: Proyecto Java Búsqueda de objetos en ArrayList determinar coincidencia nombre  (Leído 3435 veces)

diegoxd7

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Buenas quería pedirles ayuda en mi proyecto. Es un catalogo con componentes electrónicos y en una parte del código se puede buscar por nombre pero solo me aparece el primero ya trate de todo pero no puedo hacer que me muestre los demás. En el link de abajo esta el programa en java creado con bluej. Perdón por el código precario es que aun estoy aprendiendo el lenguaje.
https://www.dropbox.com/s/qyaeo3yu8vtczw9/catalogo%2012.0.zip?dl=0
« Última modificación: 08 de Julio 2017, 12:29 por Ogramar »

Kabuto

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 988
    • Ver Perfil
Re:Búsqueda de objetos en un arraylist
« Respuesta #1 en: 18 de Junio 2017, 13:33 »
Hola,

tu método para buscar por nombre es este:
Código: [Seleccionar]
public void buscarPorNombre(String nombre){
       Componente encontrado = null;
       for(Componente actual : componentes){
           if(actual.getNombre().equals(nombre)){
               encontrado = actual;
               break;
           }
       }
            if(encontrado != null){
                encontrado.darDatos();
            } else {
                System.out.println("no se encontro al Componente");
            }
       
    }

Efectivamente, ese código solo te permite mostrar información de un único elemento, el primero que se encuentre.

Una posible solución para mostrar la información de todos los elementos que coincicidan con el nombre de la búsqueda, podría ser evitar detener el bucle con el break.
Y lo que hacemos dentro del bucle es mostrar directamente la información de todos los componentes que coincidan con el nombre indicado.

Podría ocurrir que ninguno coincidiese, en cuyo caso sería necesario informar por pantalla.
Para controlar si hemos encontrado coincidiencias o no, podemos servirnos de una variable booleana.

Por ejemplo:
Código: [Seleccionar]
public void buscarPorNombre(String nombre)
{
boolean encontrado = false;//Si hallamos alguna coincidencia, su valor cambiará a true

//Buscamos componentes que coincidan con el nombre indicado
for(Componente actual : componentes)
{
                    if(actual.getNombre().equals(nombre))
     {
                           actual.darDatos();
   encontrado = true;
     }
}

/*
* Busqueda finalizada.
* Si se han encontrado coincidencias, los datos de los componentes que
* coinciden habrán salido por pantalla.
* Si no se ha encontrado coincidencia ninguna, no habrá salido ninguna informacion
* en pantalla y sería conveniente informar de que no han habido coincidencias.
* Para saber si tenemos que informar o no, basta con consultar el valor de
* la variable "encontrado", si es false, debemos informar
*/

if (!encontrado)
System.out.println("No se encontraron componentes con el nombre: " + nombre);
}



NO respondo dudas por mensaje privado
Publicando vuestras dudas en el foro público conseguimos:
- Que más gente aporte respuestas mejores o complementarias.
- Que otras personas puedan aprender de vuestras dudas.

Mejor en PÚBLICO que en privado. Gracias

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".