[RESOLVIDO] Colocar números em ordem decrescente

9 respostas
Onimatsu

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?

9 Respostas

InicianteJavaHenriqu

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:

Onimatsu

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?

InicianteJavaHenriqu

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:

lucas_guj

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

InicianteJavaHenriqu

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

lucas_guj

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

Onimatsu

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.
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:

InicianteJavaHenriqu

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:

Onimatsu

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

Criado 18 de março de 2012
Ultima resposta 18 de mar. de 2012
Respostas 9
Participantes 3