Se forem só 3 números, não precisa complicar testando todas as possibilidades. Dá pra resolver com 3 if
's:
// lê os números (pode ser com Scanner, como você fez)
int numero1 = ...;
int numero2 = ...;
int numero3 = ...;
int tmp;
// se numero1 for menor que numero3, troca os valores deles
if (numero1 < numero3) {
tmp = numero1;
numero1 = numero3;
numero3 = tmp;
}
// aqui neste ponto eu tenho certeza que numero1 é maior ou igual a numero3
// se numero1 for menor que numero2, troca os valores deles
if (numero1 < numero2) {
tmp = numero1;
numero1 = numero2;
numero2 = tmp;
}
// aqui neste ponto eu tenho certeza que numero1 é maior ou igual a numero2 e numero3
// mas ainda falta saber sobre numero2 e numero3, qual deles é maior
// se numero2 for menor que numero3, troca os valores deles
if (numero2 < numero3) {
tmp = numero2;
numero2 = numero3;
numero3 = tmp;
}
// aqui neste ponto eu tenho certeza que numero1 é maior ou igual a numero2, que por sua vez é maior ou igual a numero3
System.out.println("O maior número é " + numero1 + " e o menor é " + numero3);
O primeiro if
verifica se numero1
é menor que numero3
, e caso seja, troca os valores deles (um passa a ter o valor do outro). Se numero1
for maior ou igual a numero3
, não entra no if
. Ou seja, depois deste if
, eu tenho certeza que numero1
será maior ou igual a numero3
.
Depois eu faço o mesmo com numero1
e numero2
. Então depois do segundo if
eu tenho certeza que numero1
é maior ou igual a numero2
e maior ou igual a numero3
.
Mas eu ainda não sei se numero2
é maior que numero3
, então eu uso o terceiro if
para isso. Depois deste if
(que usa a mesma lógica dos anteriores, de trocar os valores caso seja necessário), eu tenho certeza que numero2
é maior ou igual a numero3
. E como os if
's anteriores me garantiram que numero1
é maior ou igual a numero2
e a numero3
, eu sei que o maior número é numero1
e o menor é numero3
.
Se tiver mais números, aí não compensa fazer assim, e o melhor seria guardar os números em um array ou lista, e ordená-los:
Scanner entrada = new Scanner(System.in);
int quantidade = 10; // ler 10 números (mude conforme a necessidade)
int numeros[] = new int[quantidade]; // array que vai guardar os números
for (int i = 0; i < numeros.length; i++) {
System.out.printf("Digite o %d° número:", i + 1);
numeros[i] = entrada.nextInt();
}
// ordena o array
Arrays.sort(numeros);
// o maior número é o último do array, o menor é o primeiro
System.out.println("O maior número é " + numeros[numeros.length - 1] + " e o menor é " + numeros[0]);
Agora se você não precisasse guardar todos os números lidos e só quer saber o maior e menor, aí daria para ser assim:
Scanner entrada = new Scanner(System.in);
int quantidade = 10; // ler 10 números (mude conforme a necessidade)
int maior = Integer.MIN_VALUE, menor = Integer.MAX_VALUE;
for (int i = 0; i < quantidade; i++) {
System.out.printf("Digite o %d° número:", i + 1);
int n = entrada.nextInt();
if (n > maior)
maior = n;
if (n < menor)
menor = n;
}
System.out.println("O maior número é " + maior + " e o menor é " + menor);