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
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.