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

Encontrar el siguiente numero al no encontrado en un arraylist

Estas en el tema de Encontrar el siguiente numero al no encontrado en un arraylist en el foro de Java en Foros del Web. Saludos, Tengo creado un programa y uno de los metodos es encontrar un numero dentro de un Arraylist. Cuando el numero se encuentra, me funciona ...
  #1 (permalink)  
Antiguo 16/02/2012, 09:49
 
Fecha de Ingreso: septiembre-2009
Mensajes: 15
Antigüedad: 14 años, 7 meses
Puntos: 0
Encontrar el siguiente numero al no encontrado en un arraylist

Saludos,

Tengo creado un programa y uno de los metodos es encontrar un numero dentro de un Arraylist.
Cuando el numero se encuentra, me funciona bien.
Cuando no lo encuentra, Sale el error diciendo que no se encuentra.
Lo que quiero hacer es, que cuando no encuentra el numero, me encuentre el siguiente numero superior.


public void encontrar(ArrayList<Integer> numeros){
java.util.Scanner sc = new java.util.Scanner(System.in);
int encontrar;
System.out.println("Introduce el numero a buscar:");
encontrar= sc.nextInt();




if (numeros.contains(encontrar)){
System.out.println( encontrar+ " la primera posicion es "+numeros.indexOf(encontrar)");
System.exit(0);
// }

} else {
int aux = encontrar;
System.out.println(encontrar+ " No se encuentra el numero");
do{
aux++;
}while (numeros.get(aux)!=encontrar);
System.out.println( encontrar+ " el siguiente numero superior " +aux+ " esta en la posicion"+numeros.indexOf(aux)");
System.exit(0);
}
He probado tambien con .equals, pero no he conseguido nada.
Tal vez no sea posible, si podeis darme alguna pista.
Gracias por adelantado
  #2 (permalink)  
Antiguo 16/02/2012, 14:59
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Encontrar el siguiente numero al no encontrado en un arraylist

Si quieres encontrar el número superior tendrás que ordenar el array o recorrer el array entero buscando el menor número que sea mayor que el que buscabas.


Código Java:
Ver original
  1. public class PruebaNumeros {
  2.  
  3.     public void encontrar(ArrayList<Integer> numeros) {
  4.         java.util.Scanner sc = new java.util.Scanner(System.in);
  5.         int encontrar;
  6.         System.out.println("Introduce el numero a buscar:");
  7.         encontrar = sc.nextInt();
  8.        
  9.         if (numeros.contains(encontrar)) {
  10.             System.out.println(encontrar + " la primera posicion es " + numeros.indexOf(encontrar));
  11.             System.exit(0);
  12.         }
  13.         else {
  14.             int posicion = -1, i =0;
  15.             int minimo = Integer.MAX_VALUE;
  16.             System.out.println(encontrar + " No se encuentra el numero");
  17.          
  18.            
  19.             for(int numero : numeros){
  20.                 if (numero > encontrar && numero < minimo){                    
  21.                  minimo = numero;
  22.                  posicion = i;
  23.                 }
  24.                 i++;                
  25.             }
  26.            
  27.             if (posicion != -1)
  28.             {
  29.             System.out.println(encontrar + " el siguiente numero superior " + minimo + " esta en la posicion " + posicion);
  30.             System.exit(0);
  31.             }
  32.             else  System.out.println("No hay un numero superior a "+ encontrar +" en el array");
  33.         }
  34.     }
  35.  
  36.     public static void main(String[] args) {
  37.  
  38.         PruebaNumeros n = new PruebaNumeros();
  39.         ArrayList<Integer> arrayList = new ArrayList<Integer>();
  40.         Collections.addAll(arrayList, 1, 3, 5, 7, 2, 8, 20,30);
  41.         n.encontrar(arrayList);
  42.     }
  43. }
  #3 (permalink)  
Antiguo 17/02/2012, 03:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 15
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Encontrar el siguiente numero al no encontrado en un arraylist

No tenia copiado el Main, ya que solo tenía problemas en este metodo.

Muchas gracias por la ayuda Alexg88! La verdad que estaba bastante perdido, estaba intentando del modo en el que copie el codigo pero no había manera. En internet tampoco encontraba nada.

Gracias

Etiquetas: arraylist, encontrado, encontrar, numero, programa, siguiente
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 21:38.