feed twitter facebook LinkedIn facebook

Java » Primer numero repetido

Noviembre 1, 2007 por Víctor Cuervo . 8948 visitas 4 Comentarios Imprimir Imprimir

Con este algoritmo pretendemos buscar el primer elemento que está repetido dentro de un array utilizando el lenguaje Java.

La idea general es trabajar con dos arrays. En el primero tenemos la lista de elementos general y en el segundo iremos introduciendo los elementos leídos. Por cada elemento que tengamos en el array principal vamos a buscar al de los leídos para ver si ya está. En el caso de que esté será que dicho elemento es el primer elemento repetido. Será entonces cuando acabemos nuestra ejecución.

Pero vamos por partes. Lo primero que hay que hacer es declarar los dos arrays. El que contiene los números inicialmente y el que irá conteniendo los leídos. El tamaño del segundo array será igual que el tamaño del primero.

int[] listaNumeros = {1,4,7,8,9,2,7,15,4,6,9,9,8};
int[] listaNumerosLeidos = new int[listaNumeros.length];

Una vez definidos los arrays empezamos a recorrer el array listaNumeros. Para ello utilizamos un bucle while que controle el tamaño y una variable bEncontrado que nos servirá como condición de guarda para salir del bucle en el caso de que encontremos el número repetido, evitando así el recorrer todo el bucle una vez encontrado lo que buscamos.

while((x<listaNumeros.length) && (bEncontrado != true)) {...}

Con cada número volveremos a recorrer la lista de leídos. Este bucle será el mismo que el anterior, pero sobre listaNumerosLeidos.

while ((y<listaNumerosLeidos.length) && (bEncontrado != true)) {...}

Será dentro de este segundo bucle donde realicemos la validación. Está será validar si el número del primer array coincide con el número actual del segundo array. En caso afirmativo cambiaremos el valor de la variable bEncontrado.

if (listaNumeros[x] == listaNumerosLeidos[y])
   bEncontrado = true;

Si el elemento del array principal no coincide con ninguno de los elementos del array de los número leídos, será introducido en dicho array. Ocupando la misma posición que ocupaba en el array principal.

if (!bEncontrado)
   listaNumerosLeidos[x] = listaNumeros[x];

Para acabar, solo mostraremos la información en el caso de tener activada la variable bEcontrado.

Visualizar el ejemplo | Descargar el código

tags: , , ,

Artículos relacionados:

4 comentarios »

Redifusión RSS de los comentarios de la entrada. TrackBack URI

  1. lira
    Marzo 24, 2011 #

    como se pueden buscar numeros repetidos
    como el nueve que esta en el ejemplo
    y que se muestre cuantas veces se repite
    si alguien me puede explicar mi correo es lira_dark@hotmail.com
    me pueden dejar un mensaje

  2. cesar
    Marzo 28, 2011 #

    hola
    podrian poner un ejemplo de como dice lira en el comentario

  3. Víctor Cuervo
    Marzo 28, 2011 #

    @lira, @cesar,

    Podéis ir contando las ocurrencias e insertarlas en un HashMap.

    for (int x=0;x<listaNumeros.length;x++) {
      clave = listaNumeros[x];
      if (hm.containsKey(clave))
        hm.put(clave, hm.get(clave)+1);
      else
        hm.put(clave,1);
    }

    Luego solo queda listar el HashMap y solucionado
    http://lineadecodigo.com/java/listar-un-mapa-con-java-util/

    De todas maneras intentaré publicarlo pronto en la web. :-D

    Espero que esto os sirva de ayuda.

  4. Víctor Cuervo
    Marzo 30, 2011 #

    @lira, @cesar,

    Ya tenéis el código explicado en http://lineadecodigo.com/java/numero-de-ocurrencias-en-un-array/

Deje un comentario

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*