Ordener 3 numeros

import javax.swing.*;

public class numeros {

	public static String ordena_Num(int n1, int n2, int n3) {
		int iMenor = 1 , iMedio = 1, iMaior = 1;
		String saida = "Ordem";
// **********************************************************************************
		if (n1 <= n2 && n1 <= n3) {
			iMenor = n1;

		} else if (n1 >= n2 && n1 >= n3) {
			iMaior = n1;

		} else {

			iMedio = n1;

		}
//**********************************************************************************
		if (n2 >= n1 && n2 >= n3) {
			iMaior = n2;

		} else if (n2 <= n1 && n2 <= n3) {

			iMenor = n2;
		}

		else {

			iMedio = n2;

		}
//****************************************************************************		
		
		if (n3 >= n1 && n3 >= n2){
			iMaior = n3;
			
			
		}
		 else if( n3 <= n1 && n3 <= n2){
			iMenor =n3;
			
		}
		else {
			
            iMedio = n3;    			
						
		}
//******************************************************************************
		saida = " " + iMenor + "," + iMedio +"," + iMaior ;  
		return saida;

	}
	
	public static void main ( String  [] args ){
		
		String sN1 , sN2, sN3;
		int    iN1 , iN2 , iN3;
		
		sN1 = JOptionPane.showInputDialog ( "insira o número 1");
		iN1 = Integer.parseInt(sN1);
		
		sN2 = JOptionPane.showInputDialog ( "insira o número 2");
		iN2 = Integer.parseInt(sN2);5
		
		sN3 = JOptionPane.showInputDialog ( "insira o número 3");
	    iN3 = Integer.parseInt(sN3);
		
	    
	    JOptionPane.showMessageDialog ( null,"Numeros ordenados \n " + ordena_Num(iN1,iN2,iN3));
		
	}
	
	

}

aee galera , ordenar 3 numeros sem utilizar loop ou vetor…

ve se esta correto , e se tem uma forma melhor de fazer.
abraço

Olha, estou sem jdk aqui para testar porem vc mesmo pode verificar contra alguns cenarios de teste.

Eu, por exemplo, usaria Recursão :slight_smile:

algo como

ordena(a,b,c) { if (b > c) // troca return ordena(a,c,b); else if(a > b) // troca tb return ordena(b,a,c); else // esta ordenado!! return "" + a + "," + b + "," + c; }

ACHO q esta certo, deveria fazer algo como

ordena(3,2,1)
return ordena(3,1,2), cai no primeiro if
return ordena(1,3,2), cai no segundo if
return ordena(1,2,3) , cai no primeiro if denovo
return “1,2,3” TCHANNN

Uma outra forma.

public class Main {	
	
	public static String ordena_Num(int n1, int n2, int n3) {		
		String saida = "";
		
		if((n1 < n2 && n1 < n3)){
			if(n2 < n3)
				saida += n1 + " " + n2 + " " + n3;
			else
				saida += n1 + " " + n3 + " " + n2;
		}
		else if((n2 < n1 && n2 < n3)){
			if(n1 < n3)
				saida += n2 + " " + n1 + " " + n3;
			else
				saida += n2 + " " + n3 + " " + n1;
		}
		else if((n3 < n1 && n3 < n2)){
			if(n1 < n2)
				saida += n3 + " " + n1 + " " + n2;
			else
				saida += n3 + " " + n2 + " " + n1;
		}	
 
		return saida;

	}
	
	public static void main ( String  [] args ){
		
		int    num1 , num2 , num3;
		
		num1 = Integer.parseInt(JOptionPane.showInputDialog ( "Insira o número 1"));
				
		num2 = Integer.parseInt(JOptionPane.showInputDialog ( "Insira o número 2"));
				
	    num3 = Integer.parseInt(JOptionPane.showInputDialog ( "Insira o número 3"));		
	    
	    JOptionPane.showMessageDialog ( null,"Números ordenados \n " + ordena_Num(num1, num2, num3));
		
	}
}

Mas eu acho que a melhor forma de implementar isto, seria usando recursão como o nosso amigo peczenyj.

Espero ter ajudado.

A vantagem da sua forma, henriquejhc, é o domínio da estrutura de controle if/else e dos operadores booleanos AND (e NOT, e OR se tiver alguma criatividade). Quando estudamos algoritmos de ordenação ai recursão e loops fazem mais sentido.

recursividade é um grande problema pra quem esta iniciando em programação.
;s