Dudas de Programacion » Java » Java Básico

Una duda con arreglos(basico)

(5 posts)
  • Started 1 year ago by saintmauricioxd
  • Latest reply from fiurer87
  1. saintmauricioxd
    Member

    Bueno stoy empezando con arreglos y tengo una duda con este codigo:

    1. public void buscarElem(int x)
    2. {
    3. int res=0;
    4. int i=0;
    5. boolean enc = false;
    6. while(i<arreglo.length && !enc)
    7. {
    8. if(arreglo[i]==x)
    9. {
    10. enc =true;
    11. res=x;
    12. System.out.println("elemento encontrado:"+ res);
    13. }else{
    14. enc = false;
    15. System.out.println("elemento no encontrado.");
    16.  
    17. }
    18. i++;
    19. }

    esto busca un elemento en el arreglo y lo devuelve, funciona correctamente pero lo q no logro solucionar esq digamos cuando encuentra un elemento en la posicion 6 me imprime para los indices del 0-4 "elemento no encontrado." y el 5 devuelve el numero, eso quiero q me notifique pero sin que repita tantas veces los indices "elemento no encontrado" al recorrer la lista, alguna sugerencia es bienvenida muchas gracias de antemano.

    Posted 1 year ago #


  2. garusis
    Member

    pues... en tu lugar, eliminaria el else del ciclo... si te fijas, es totalmente innecesario, ya que si no entra por el if, el valor de enc seguira siendo false. si es necesario que muestre el mensaje de que el elemento no fue encontrado, entonces puedes agregar un if al final comprobando si lo encontro o no... algo asi:

    1. public void buscarElem(int x)
    2. {
    3. int i=0;
    4. boolean enc = false;
    5.  
    6. while(i<arreglo.length && !enc)
    7. {
    8. if(arreglo[i]==x)
    9. {
    10. enc =true;
    11. System.out.println("elemento encontrado:"+ x);
    12. }
    13. i++;
    14. }
    15.  
    16. if(!enc){
    17. System.out.println("elemento no encontrado:");
    18. }
    19. }
    Posted 1 year ago #
  3. Buenas,

    como te comenta garusis el problema es que tenías dentro del bucle la línea que imprimía por pantalla.

    No se si estás practicando o necesitas usar los arreglos para algo más, pero por informarte que sepas que existe una clase de utilidades en Java para el manejo de arreglos.

    http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/api/java/util/Arrays.html

    Y ya trae unos métodos para la búsqueda optimizados, un ejemplo de lo que tu quieres hacer hecho con esta clase de utilidades:

     
     
    import java.util.Arrays;
     
    class Prueba {
     
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
        	int[] listaEnteros = {1,5, 7, 28, 49, 88, 100, 150, 336, 500};
        	Arrays.sort(listaEnteros);
        	System.out.println(Arrays.binarySearch(listaEnteros, 88));
     
    	}
     
    }
     
    Saludos
    Posted 1 year ago #
  4. fiurer87
    Member

    Buenas sugerencias.
    Pero hay que preguntarse que pasa si el elemento que buscas existe en mas de una posicion, en tal caso deberias imprimir todas las posiciones donde se encuentra.

    Aquí la mía.

     
    public void buscarElemento(int x){
      boolean estado = false;
      for(int i=0; i<arreglo.length; i++){
          if(arreglo[i]==x){
             System.out.println("Posicion: "+i);
             estado = true;
          }
      }
      if(!estado) System.out.println("Elemento no encontrado");
    }
     
    Posted 1 year ago #


  5. fiurer87
    Member

    en caso de que quieras crear una funcion que busque un elemento y retorne el indice es mas sencillo.
    Esta funcion retornara -1 si es que no hallo el elemento, en caso de que existan el elemento en mas de una posicion solo tomara en cuenta la primera coincidencia y retorara el indice-posicion donde se hallo el elemento.

     
    public int posicionElemento(int x, int[] arreglo){
       for(int i=0; i<arreglo.length; i++)
           if(arreglo[i]==x) return i;
       return -1;
    }
     
    Posted 1 year ago #

Reply

You must log in to post.

935 posts in 394 topics over 36 months by 349 of 787 members. Latest: Balkirium, redundantlogic2, shianim

Acerca de...

Dudas de Programación es una Web, dentro del proyecto aulambra.com que nace con la idea de propocionar un foro de consultas sobre diferentes temas de programación. Orientado a ayudar a los internautas hispano-hablantes en Internet.

Ir al Blog de Linea de Código

Otras Webs