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);