El día de hoy resolveremos un ejercicio de programación en Java en donde tenemos que encontrar el menor y el mayor de una serie de números introducida por el usuario. La solicitud dice así:

Calcula el número más grande y pequeño de los números introducidos por teclado. Acabamos de introducir números cuando el usuario nos introduzca el 0. El 0 no debe tenerse en cuenta, es una marca final.

Entonces mientras el usuario no introduzca un cero debemos agregar los números a una lista, y una vez que encontremos el cero obtenemos el mayor y menor.

Veamos cómo resolver este ejercicio de programación con Java.

Explicación del algoritmo

Vamos a hacer un ciclo infinito que se romperá cuando encontremos un 0. El ciclo será un while(true) y para romperlo usaremos break.

Al inicio del ciclo vamos a declarar la lista de números. En este caso por comodidad usaré un ArrayList.

Mientras el ciclo se esté ejecutando vamos a escanear un número introducido por el usuario y si no es cero lo vamos a agregar al ArrayList. Si es que es cero entonces rompemos el ciclo.

Cuando estemos fuera del ciclo (esto pasará cuando el usuario haya terminado de introducir números) vamos a inicializar nuestro mayor y menor hasta el momento y vamos a suponer que ambos son el primer elemento del ArrayList (solo para inicializar).

Luego recorremos la lista y comparamos cada valor. Si el valor actual es mayor que el mayor hasta el momento, entonces el nuevo valor del mayor es el valor actual. Y lo mismo para el menor.

Máximo y mínimo de serie introducida por usuario en Java

Arriba expliqué el algoritmo, ahora veamos el código. Primero declaramos y llenamos el ArrayList:

Scanner sc = new Scanner(System.in);
ArrayList<Integer> numeros = new ArrayList<>();
while (true) {
    System.out.println("Ingresa un número: ");
    int numero = sc.nextInt();
    if (numero == 0) {
        break;
    } else {
        numeros.add(numero);
    }
}

Ahora comparamos si la lista tiene elementos (ya que el usuario pudo dejarla vacía):

if (numeros.size() <= 0) {
    System.out.println("No se ha introducido ningún valor correcto.");
} else {
  // Aquí podemos estar seguros de que hay elementos
}

Y en caso de que no esté vacía buscamos el mayor y menor además de imprimir los resultados:

int mayor = numeros.get(0);
int menor = numeros.get(0);
for (int numero : numeros) {
    if (numero > mayor) {
        mayor = numero;
    }
    if (numero < menor) {
        menor = numero;
    }
}
System.out.printf("Máximo: %d; Mínimo: %d", mayor, menor);

Poniendo todo junto

Mínimo y máximo de serie numérica introducida por usuario en Java - Ejercicio resuelto

El código completo queda como se ve a continuación. Lo he colocado en una función separada para que el código quede mejor ordenado:

public static void serieMaximoMinimo() {
    Scanner sc = new Scanner(System.in);
    ArrayList<Integer> numeros = new ArrayList<>();
    while (true) {
        System.out.println("Ingresa un número: ");
        int numero = sc.nextInt();
        if (numero == 0) {
            break;
        } else {
            numeros.add(numero);
        }
    }
    if (numeros.size() <= 0) {
        System.out.println("No se ha introducido ningún valor correcto.");
    } else {
        int mayor = numeros.get(0);
        int menor = numeros.get(0);
        for (int numero : numeros) {
            if (numero > mayor) {
                mayor = numero;
            }
            if (numero < menor) {
                menor = numero;
            }
        }
        System.out.printf("Máximo: %d; Mínimo: %d", mayor, menor);
    }
    sc.close();
}

Puedes ejecutarlo desde cualquier lugar, por ejemplo, el método main:

public static void main(String[] args) {
    serieMaximoMinimo();
}

No olvides importar a java.util.Scanner.

Para terminar te dejo con más tutoriales de Java en mi blog.

Si el post ha sido de tu agrado te invito a que me sigas para saber cuando haya escrito un nuevo post, haya actualizado algún sistema o publicado un nuevo software. Facebook | X | Instagram | Telegram | También estoy a tus órdenes para cualquier contratación en mi página de contacto