Ejercicio 4. Máximo y mínimo

Escribe un programa que pida 10 números por teclado y que luego muestre los números introducidos junto con las palabras “máximo” y “mínimo” al lado del máximo y del mínimo respectivamente.

Esta actividad es muy similar a la anterior, debemos crear el array correspondiente donde almacenar los diez valores, pero además, debemos operar en el interior del bucle para poder hacer los cálculos del máximo y el mínimo.

Para el desarrollo del ejercicio vamos a utilizar las variables, máximo y mínimo, en las que almacenaremos el valor máximo y mínimo entre todos los que se vayan introduciendo por teclado.

Estos valores, debemos inicializarlos con un valor, el cual vamos a utilizar para comparar con el primer número que se introduzca, como no nos indican rangos, estos valores podrían ser CUALQUIERA.

Entonces, ¿Cuáles pueden ser los valores asignados a estas variables?

Hay dos expresiones que nos devuelven el valor máximo y mínimo que se puede asignar a una variable de tipo int en Java, estas son:

Integer.MIN_VALUE – devuelve el valor mínimo.
Integer.MAX_VALUE – devuelve el valor máximo.

De tal modo, que las variables quedarán iniciadas del siguiente modo:

minimo = Integer.MAX_VALUE;
maximo = Integer.MIN_VALUE;

Si observas, podríamos decir que están “invertidas”, esto es para que cuando introduzcamos el primer valor, sea el que sea, la variable mínimo y máximo siempre se modifiquen (al menos, una de las dos, en el hipotético caso de que se introdujese uno de esos valores exactos).

Una vez tenemos esta inicialización, realizaremos el bucle para ir pidiendo los números al usuario, como dijimos igual que en el ejercicio anterior:

for (i=0;i<10;i++) {
System.out.print("Introduce el número "+(i+1)+": ");
numero[i] = scanner.nextInt();
if (numero[i]<minimo) {
minimo  = numero[i];
}
if (numero[i]>maximo) {
maximo = numero[i];
}
}

Como puedes ver en este bucle, lo que hemos añadido son dos condicionales, en los cuales analizaremos el valor insertado por el usuario y veremos si se trata de valores que sean máximo o mínimo.

Se trata de dos if y no de un if… else if porque puede darse el caso de que un número sea a la vez máximo y mínimo (de hecho, sucede en la introducción del primer número), pero también porque cuando introduces los números de forma sucesiva, por ejemplo, si no lo hiciésemos así, podría darse la siguiente situación:

  • en el primer ciclo, si introducimos por ejemplo 50, este sería el valor asignado al mínimo, al haber entrado ahí, ya no modificaría el valor del máximo, y este seguiría siendo Integer.MIN_VALUE.
    minimo = 50 – maximo = Integer.MIN_VALUE.
  • segundo ciclo, introducimos 45, al entrar en el if, sería menor que el valor almacenado en mínimo, con lo que se volvería a modificar esta variable (y no la de máximo)
    minimo = 45 – maximo = Integer.MIN_VALUE.
  • tercer ciclo, introducimos 40…
    minimo = 40 – maximo = Integer.MIN_VALUE.

Si repetimos esta secuencia de introducción de datos cada vez más pequeños, obtendríamos que sólo se modificaría esa variable, manteniendo la otra el valor inicial y por tanto creando una incongruencia en el programa, ya que al mostrar los resultados, no detectaría el valor máximo (que debería haber sido 50).

Una vez realizada la inserción y comprobación correcta de todos los datos, tendríamos un máximo y un mínimo válidos, y procederíamos a recorrer el bucle para ir imprimiendo en pantalla los valores introducidos por el usuario, sabiendo que cuando vaya a aparecer el valor máximo y mínimo (podría coincidir que se hayan incluido varias veces los máximos y mínimos) debe quedar reflejado a su lado.

for (i=0; i<10;i++) {
if (numero[i]==maximo) {
System.out.println("Número "+ (i+1)+": "+numero[i] + " máximo.");
}
if (numero[i]== minimo) {
System.out.println("Número "+ (i+1)+": "+numero[i] + " mínimo.");
}
if (numero[i] == maximo || numero[i] == minimo) {
} else {
System.out.println("Número "+ (i+1)+": "+numero[i]);
}
}

package arrays1dimension;

import java.util.Scanner;

/**
 *Ejercicio05
 *
 *	Escribe un programa que pida 10 números por teclado y que luego muestre los
 *	números introducidos junto con las palabras “máximo” y “mínimo” al lado del
 *	máximo y del mínimo respectivamente.
 *
 * @author manuelhidalgo
 * @since 24-11-2019
 */

public class Arrays1Dimension05 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int i;
		int[] numero = new int[10];
		int maximo = Integer.MIN_VALUE;
		int minimo = Integer.MAX_VALUE;
		
		System.out.println("Programa que pide 10 números y calcula el máximo y mínimo.");
		for (i=0;i<10;i++) {
			System.out.print("Introduce el número "+(i+1)+": ");
			numero[i] = scanner.nextInt();
			if (numero[i]<minimo) {
				minimo  = numero[i];
			}
			if (numero[i]>maximo) {
				maximo = numero[i];
			}
		}
		for (i=0; i<10;i++) {
			if (numero[i]==maximo) {
				System.out.println("Número "+ (i+1)+": "+numero[i] + " máximo.");
				}
			if (numero[i]== minimo) {
				System.out.println("Número "+ (i+1)+": "+numero[i] + " mínimo.");
			}
			if (numero[i] == maximo || numero[i] == minimo) {
			} else {
				System.out.println("Número "+ (i+1)+": "+numero[i]);
			}
		}
	}
}

Puedes acceder a este ejercicio en GitHub en este enlace.

Espero que estos ejercicios de repaso de JAVA realizados durante el curso 2019/2020 en la clase de programación del I.E.S. Gran Capitán (Córdoba) puedan servirte si estás empezando, si tienes alguna duda al respecto, alguna sugerencia o algo que no te haya quedado claro, no tienes más que escribirme en los comentarios, estoy aquí para ayudarte y aprender, ¡Nos leemos!