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?
É + 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?
InicianteJavaHenriqu1 like
Sim posso, mas acho que você poderia tentar mais um pouco (não sei a quando tempo você está tentando) 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.
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);}
}elseif(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
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 > xif((x>y&&x>z)&&(y>z)){// x > y > zSystem.out.println(x);System.out.println(y);System.out.println(z);}elseif((x>y&&x>z)&&(z>y)){// x > z > ySystem.out.println(x);System.out.println(z);System.out.println(y);}elseif((y>x&&y>z)&&(x>z)){y>x>zSystem.out.println(y);System.out.println(x);System.out.println(z);}elseif((y>x&&y>z)&&(z>x)){// y > z > xSystem.out.println(y);System.out.println(z);System.out.println(x);}elseif((z>x&&z>y)&&(x>y)){// z > x > ySystem.out.println(z);System.out.println(x);System.out.println(y);}elseif((z>x&&z>y)&&(y>x)){// z > y > xSystem.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 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é :?:
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: