Preciso de ajuda para resolver um código simples em java

Boa tarde, eu preciso fazer um programa que peça ao usuário três números, e o programa deve ordenar eles em ordem decrescente, e eu não estou conseguindo pegar o número do meio, podem me ajudar?

------ código ------

import java.util.Scanner;

class Exercicio9{

public static void main(String[] args){
	
	Scanner scan = new Scanner(System.in);
	
	int menorNumero = 0;
	int maiorNumero = 0;
	int numeroDoMeio = 0;

	System.out.println("Digite o primeiro número: ");
	int nmr1 = scan.nextInt();

	System.out.println("Digite o segundo número: ");
	int nmr2 = scan.nextInt();
	
	if(nmr1 > nmr2) {
		maiorNumero = nmr1;
		menorNumero = nmr2;
	}else if(nmr2 > nmr1) {
		maiorNumero = nmr2;
		menorNumero = nmr1;
	}
	
	if(maiorNumero > nmr1 && nmr1 > menorNumero) {
		numeroDoMeio = nmr1;
	}
	if(maiorNumero > nmr2 && nmr2 > menorNumero) {
		numeroDoMeio = nmr2;
	}
	

	System.out.println("Digite o terceiro número: ");
	int nmr3 = scan.nextInt();

	if(nmr3 > maiorNumero) {
		maiorNumero = nmr3;
	}else if(menorNumero > nmr3) {
		menorNumero = nmr3;
	}else if (maiorNumero > nmr3 && nmr3 > menorNumero) {
		numeroDoMeio = nmr3;
	}
	
	System.out.println(maiorNumero + " é o maior número");
	System.out.println(numeroDoMeio + " é o número do meio");
	System.out.println(menorNumero + " é o menor número");
	
	
}

}

Num caso mais geral (com vários números), compensaria guardar tudo em um array ou lista, e ordená-los.

Mas como são somente três, dá pra fazer assim:

Scanner scan = new Scanner(System.in);
System.out.println("Digite o primeiro número: ");
int n1 = scan.nextInt();
System.out.println("Digite o segundo número: ");
int n2 = scan.nextInt();
System.out.println("Digite o terceiro número: ");
int n3 = scan.nextInt();

int tmp;
// se n1 é maior que n2, troca os valores
if (n1 > n2) {
    tmp = n1;
    n1 = n2;
    n2 = tmp;
}
// aqui eu sei que com certeza n1 é menor ou igual a n2

// se n1 é maior que n3, troca os valores
if (n1 > n3) {
    tmp = n1;
    n1 = n3;
    n3 = tmp;
}
// aqui eu sei que com certeza n1 é menor ou igual a n2 e n3

// se n2 é maior que n3, troca os valores
if (n2 > n3) {
    tmp = n2;
    n2 = n3;
    n3 = tmp;
}
// aqui eu sei que com certeza n2 é menor ou igual a n3

// portanto, aqui temos que n1 <= n2 <= n3
System.out.println(n3 + " é o maior número");
System.out.println(n2 + " é o número do meio");
System.out.println(n1 + " é o menor número");

Ou seja, eu comparo os números, dois a dois, de forma que n1 seja o menor, n2 o do meio e n3 o maior.

Para isso, primeiro eu vejo se n1 é maior que n2. Se for, eu troco os valores deles (se não for, não preciso fazer nada). Então depois do primeiro if eu tenho certeza que n1 é menor ou igual a n2.

Depois faço o mesmo com n1 e n3, então depois do segundo if eu sei que n1 é menor ou igual a n2 e n3. Portanto, n1 já é o menor de todos, então agora só falta saber se n2 ou n3 é o maior (é isso que o terceiro if faz).

Por fim, depois do terceiro if, eu sei que n1 é o menor, n2 é o do meio e n3 é o maior.

2 curtidas