Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/02/2012, 14:59
alexg88
 
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. }