[RESOLVIDO] Colocar números em ordem decrescente

Pessoal preciso de uma ajuda.
Tenho que colocar três números inteiros x, y, z que o usuário digitar em ordem decrescente utilizando somente o comando if eu fiz dessa forma:

if (x > y && x > z) { System.out.println(x); } if (y > z) { System.out.println(y); System.out.println(z); } else { System.out.println(z); System.out.println(y); System.out.println(x);
Só que quando eu digito, por exemplo, 3,1,2 na saída fica: 3,2,1,3 o resto parece normal.
O que faltou no código?

Olá Onimatsu :smiley:

É + ou - por ai, só falta fazer mais algumas verificações e usar else if ao invés de sair de uma condição if e iniciar outra.

flw :thumbup:

Esse é o problema eu não estou conseguindo “visualizar” quais as outras verificações que eu tenho que fazer e se eu coloco else if e digito 3,2,1 sai apenas 3.
Poderia mostrar um exemplo?

Sim posso, mas acho que você poderia tentar mais um pouco (não sei a quando tempo você está tentando) :wink: O problema não é o Java, mas a lógica de programação, que vem antes de qualquer linguagem, sabe treinar pseudocódigo, fluxograma, diagrama de blocos.

Segue algumas referências bibliográficas (caso te interesse) :arrow: http://www.guj.com.br/java/266570-galera-alguem-sabe-um-bom-livro-ou-apostila-para-se-aprender-sobre-logica-de-programacao

if (x > y && x > z) {
            if (y > z) {
                System.out.println(x);
                System.out.println(y);
                System.out.println(z);
            } else {
                System.out.println(x);
                System.out.println(z);
                System.out.println(y);
            }
        } else if (y > x && y > z) {
            if (x > z) {
                System.out.println(y);
                System.out.println(x);
                System.out.println(z);
            } else {
                System.out.println(y);
                System.out.println(z);
                System.out.println(x);
            }
        } else {
            if (x > y) {
                System.out.println(z);
                System.out.println(x);
                System.out.println(y);
            } else {
                System.out.println(z);
                System.out.println(y);
                System.out.println(x);
            }
        }

P.S.: Este código pode ser otimizado, mas preferir fazer passo a passo pra você entender melhor. Qualquer dúvida é só postar :smiley:

1 curtida

Tenta assim amigo.

// Possiveis combinações:
// x > y > z --------- x > z > y
// y > x > z --------- y > z > x
// z > x > y --------- z > y > x
if( ( x > y && x > z ) && ( y > z ) ) { //  x > y > z
    System.out.println(x);
    System.out.println(y);
    System.out.println(z);
}
else if( ( x > y && x > z ) && ( z > y ) ) { // x > z > y
    System.out.println(x);
    System.out.println(z);
    System.out.println(y);
}
else if( ( y > x && y > z ) && ( x > z ) ) { y > x > z
    System.out.println(y);
    System.out.println(x);
    System.out.println(z);
}
else if( ( y > x && y > z ) && ( z > x ) ) { // y > z > x
    System.out.println(y);
    System.out.println(z);
    System.out.println(x);
}
else if( ( z > x && z > y ) && ( x > y ) ) { // z > x > y
    System.out.println(z);
    System.out.println(x);
    System.out.println(y);
}
else if( ( z > x && z > y ) && ( y > x ) ) { // z > y > x
    System.out.println(z);
    System.out.println(y);
    System.out.println(x);
}

Obs: Enquanto estava fazendo o código na resposta, o “InicianteJavaHenrique” colocou o código dele que é quase idêntico ao meu. Se soubesse não tinha feito. Mais ta ai, tentei ajudar. Abraços

Só falta fechar “)” em todas as condições else if

Isso mesmo. Obrigado pela chamada de atenção. Está editado.

[quote]O problema não é o Java, mas a lógica de programação, que vem antes de qualquer linguagem, sabe treinar pseudocódigo, fluxograma, diagrama de blocos. [/quote]Eu sei que é problema de lógica porque eu estou um tempo sem treinar :cry: mas eu consegui entender o seu código. Primeiro você verificou cada uma das posições x depois y e por último z e em cada uma delas você comparou os dois números que sobraram colocando uma condição dentro de outra.
Valeu! Funcionando perfeitamente aqui obrigado pelas dicas. :thumbup:

Legal você colocar tudo dentro de uma condição para economizar algumas linhas.
Obrigado por postar o seu código mais de um ponto de vista é sempre bem vindo. Flw! :thumbup:

Isto mesmo, foi fácil né :?: :smiley:

Ah, se sua dúvida foi resolvida e vc está satisfeito edit o 1º post e coloque a tag [RESOLVIDO] no final do título.

flw :thumbup:

Não precisava nem falar já estava marcando o post como resolvido. :mrgreen: