Como continuar esse código simples

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 ?

[code]import javax.swing.*;

public class ordenador {
public static void main(String[] args)
{

String x, y, z;
int a, b, c, d; 
      
     // Recebendo os 3 números
 x = 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 inteiro

    if(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
}

}[/code]

Pense em como fazer isso pra qualquer quantidade de números.

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á!

Uma boa seria refatorar o nome das variável para algo que faça sentido.
Por exemplo:

int a=b-c;

Refatoraria para:

int saldo=valorDisponivel-pagamentoEfetuado;

Assim vc consegue melhor o que esse código está fazendo.

Fala aew Otavio, tu não respondeu em lugar errado não ?! não tem nada disso nesse código.

Obrigado!

[quote=Legreyte]Fala aew Otavio, tu não respondeu em lugar errado não ?! não tem nada disso nesse código.

Obrigado![/quote]
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”.

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.

[quote=otaviojava][quote=Legreyte]Fala aew Otavio, tu não respondeu em lugar errado não ?! não tem nada disso nesse código.

Obrigado![/quote]
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”. [/quote]

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!

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.

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import javax.swing.JOptionPane;

public class Teste {
	   public static void main(String[] args)  
	   {  
	     
	         
	       List<Integer> numeros=new ArrayList<Integer>();
	            // Recebendo os 3 números  
	       for(int indice=0;indice<3;indice++){
	    	   String x = JOptionPane.showInputDialog( "Digite um valor numérico:"); 
	    	   numeros.add(Integer.parseInt(x)); 
	       }
	     
	     
	        Collections.sort(numeros);
	        for(Integer numero:numeros){
	        	System.out.println(numero); // Resultado do menor para o maior	
	        	
	        }
	             
	       }  
}

Utilizei do que você falou com as variáveis sendo notas, ficou assim:

[code]import javax.swing.*;

public class NewClass
{
public static void main(String[] args)
{

 int nota1, 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);
 }

}[/code]

Ficou melhor.
Dá uma olhada no código que eu fiz acima.
E veja o que vc acha.

Obrigado por responder Otávio. Mas velho você utilizou ArrayList, eu gostaria de entender com o uso dos if’s.

Acho que isso é mais ou menos o que vc quer:
dá uma olhada:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import javax.swing.JOptionPane;

public class Teste {
	   public static void main(String[] args)  
	   {  
	     
	         
	       List<Integer> numeros=new ArrayList<Integer>();
	            // Recebendo os 3 números  
	       for(int indice=0;indice<3;indice++){
	    	   numeros.add(Integer.parseInt(JOptionPane.showInputDialog( "Digite um valor numérico:"))); 
	       }
	     
	     
	        Collections.sort(numeros, new Comparator<Integer>() {

				@Override
				public int compare(Integer numero1, Integer numero2) {
				
					return numero2.compareTo(numero1);
				}
	        	
			});
	        for(Integer numero:numeros){
	        	System.out.println(numero); // Resultado do maior para o menor	
	        	
	        }
	             
	       }  
}

Vc se refere ao conceito ?
Se for o caso dá uma olhada em: http://www.arquivodecodigos.net/dicas/java-as-instrucoes-if-e-if-else-do-java-1232.html
Ele só entra no bloco se a condição for verdadeira.

if(nota1 < nota2){ 
//ação
}

Nesse código ele só entraria se nota1 for menor que nota2 e executaria a ação dentro do bloco.

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!

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.

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

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 nota2
if( a > b){

  //se nota2 maior que nota3
  if( b > c ){
   //faça seu processamento
  }

  //se nota2 menor que nota3
  if( 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.

Obrigado Samuel, vou procurar mais a respeito sim.

:slight_smile: