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