Bom pessoal, estava olhando esse código na internet e gostaria de fazer ele com 5 números. Como ficaria a continuação dos if's ?
importjavax.swing.*;publicclassordenador{publicstaticvoidmain(String[]args){Stringx,y,z;inta,b,c,d;// Recebendo os 3 númerosx=JOptionPane.showInputDialog("Digite um valor numérico:");y=JOptionPane.showInputDialog("Digite um valor numérico:");z=JOptionPane.showInputDialog("Digite um valor numérico:");a=Integer.parseInt(x);b=Integer.parseInt(y);c=Integer.parseInt(z);// passando os valores de String para inteiroif(a>b){d=a;a=b;b=d;}if(a>c){d=a;a=c;c=d;}if(b>c){d=b;b=c;c=d;}System.out.println(a+","+b+","+c);// Resultado do maior para o menor}}
Pense em como fazer isso pra qualquer quantidade de números.
Legreyte
Valeu por responder cara, mas aí que está o problema. Não entendi a lógica utilizada nos if’s. Se eu já estivesse entendido continuaria a fazer. É por questão de curiosidade, gostaria de faze-lo com pelo menos 5 números. Alguém entendeu essa lógica nos if’s ?
Obrigado desde já!
otaviojava
Uma boa seria refatorar o nome das variável para algo que faça sentido.
Por exemplo:
inta=b-c;
Refatoraria para:
intsaldo=valorDisponivel-pagamentoEfetuado;
Assim vc consegue melhor o que esse código está fazendo.
Legreyte
Fala aew Otavio, tu não respondeu em lugar errado não ?! não tem nada disso nesse código.
Obrigado!
otaviojava
Legreyte:
Fala aew Otavio, tu não respondeu em lugar errado não ?! não tem nada disso nesse código.
Obrigado!
Não.
Esse código foi dado somente como exemplo, o fato é que com variáveis com nome falando o que elas realmente são ficam bem mais fácil de entender em relação aos “int ai ou int b”.
otaviojava
Tenta fazer isso e veja se fica mais claro.
Caso mesmo assim vc não consiga, basta enviar um post falando que não conseguiu.
Legreyte
otaviojava:
Legreyte:
Fala aew Otavio, tu não respondeu em lugar errado não ?! não tem nada disso nesse código.
Obrigado!
Não.
Esse código foi dado somente como exemplo, o fato é que com variáveis com nome falando o que elas realmente são ficam bem mais fácil de entender em relação aos “int ai ou int b”.
Entendi, mas eu só estou querendo aprender a lógica usada nesse if, ela dá um resultado no final com os números organizados do maior para o menor. Você entendeu essa lógica ? sabe como seria a continuação dele, como por exemplo se tivesse 5 ou mais números?
Obrigado!
otaviojava
Dei uma refatorada. Dá uma olhada.
Veja se é realmente isso que vc quer.
Uma coisa que vc terá que modificar é que o código realizando a ordem crescente.
Espero que tenha te ajudado.
importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjavax.swing.JOptionPane;publicclassTeste{publicstaticvoidmain(String[]args){List<Integer>numeros=newArrayList<Integer>();// Recebendo os 3 números for(intindice=0;indice<3;indice++){Stringx=JOptionPane.showInputDialog("Digite um valor numérico:");numeros.add(Integer.parseInt(x));}Collections.sort(numeros);for(Integernumero:numeros){System.out.println(numero);// Resultado do menor para o maior }}}
Legreyte
Utilizei do que você falou com as variáveis sendo notas, ficou assim:
importjavax.swing.*;publicclassNewClass{publicstaticvoidmain(String[]args){intnota1,nota2,nota3,notaQualquer;nota1=Integer.parseInt(JOptionPane.showInputDialog("Digite um valor numérico:"));nota2=Integer.parseInt(JOptionPane.showInputDialog("Digite um valor numérico:"));nota3=Integer.parseInt(JOptionPane.showInputDialog("Digite um valor numérico:"));if(nota1<nota2){notaQualquer=nota1;nota1=nota2;nota2=notaQualquer;}if(nota1<nota3){notaQualquer=nota1;nota1=nota3;nota3=notaQualquer;}if(nota2<nota3){notaQualquer=nota2;nota2=nota3;nota3=notaQualquer;}System.out.println(nota1+","+nota2+","+nota3);}}
otaviojava
Ficou melhor.
Dá uma olhada no código que eu fiz acima.
E veja o que vc acha.
Legreyte
Obrigado por responder Otávio. Mas velho você utilizou ArrayList, eu gostaria de entender com o uso dos if’s.
otaviojava
Acho que isso é mais ou menos o que vc quer:
dá uma olhada:
importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;importjavax.swing.JOptionPane;publicclassTeste{publicstaticvoidmain(String[]args){List<Integer>numeros=newArrayList<Integer>();// Recebendo os 3 números for(intindice=0;indice<3;indice++){numeros.add(Integer.parseInt(JOptionPane.showInputDialog("Digite um valor numérico:")));}Collections.sort(numeros,newComparator<Integer>(){@Overridepublicintcompare(Integernumero1,Integernumero2){returnnumero2.compareTo(numero1);}});for(Integernumero:numeros){System.out.println(numero);// Resultado do maior para o menor }}}
Nesse código ele só entraria se nota1 for menor que nota2 e executaria a ação dentro do bloco.
Legreyte
Otavio, te agradeço novamente. O que tu fez realmente traz o mesmo resultado e até de forma melhor. Só que gostaria mesmo de fazer a continuação naquele ‘if’.
Por exemplo, se existisse as variáveis
int nota4, nota5;
além das três já existentes.
Estou matutando para entender como deu certo os números ficarem ordenados sendo usados dessa forma. Quero saber a continuação com mais ‘if’ entendeu ?
Desculpa te incomodar novamente!
otaviojava
Aparentemente o número de ifs crescerá a mesma medida que crescer o número de variáveis.
Ou seja com nota4 vc provavelmente precisará de mais um, com o nota5 de mais dois if’s e assim sucessivamente.
Legreyte
Otavio obg aí pela paciência. Talvez você não entendeu bem o que queria dizer, eu não sei muito de java, mas estou aprendendo. Estava tentando entender como aquelas igualdades nas condições dos if’s geram o resultado desejado. Vou continuar tentando entender aqui, fazendo outros testes. Falou
S
SamuelMedeiros
Cara se vc quiser fazer usando somente lógica, sem nenhum recurso da api, te recomendo armazenar os dados em um array e depois usar
algum algoritmo para ordená-lo(MergeSort por exemplo).Usar os ifs dão um crescimento na quantidade de código tremenda.Note que:
//Se nota1 maior que nota2if(a>b){//se nota2 maior que nota3if(b>c){//faça seu processamento}//se nota2 menor que nota3if(b<c){//faça seu processamento}//E se algumas notas forem iguais?O que fazer?}
Agora imagine isso com 5 notas!
Se você é iniciante em tecnologia é importante entender esses conceitos.
Dá uma olhada nos fontes de java.util.Collections e java.util.Arrays, eles podem te ajudar na solução em arrays.
Espero ter ajudado.Bons estudos.
Legreyte
Obrigado Samuel, vou procurar mais a respeito sim.