Lógica IF, ELSE

3 respostas Resolvido
java
C4sh3w

Amigos, boa. O que vocês melhorariam na lógica do if / else abaixo. Considerem o algoritmo abaixo por favor, não vamos incremetar com vetores ainda etc.

//Crie um programa para ler três números (diferentes) e imprimi-los em ordem descrescente

import javax.swing.JOptionPane;

public class Decrescente {

	public static void main (String args[]) {
		
		int n1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o 1º número: "));
		int n2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o 2º número: "));
		int n3 = Integer.parseInt(JOptionPane.showInputDialog("Digite o 3º número: "));
		
		//Fatorial de 3 = 6 possibilidades distintas
		
		if (n1 > n2 && n2 > n3)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n1 + " - " + n2 + " - " + n3);
		else if (n2 > n1 && n1 > n3)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n2 + " - " + n1 + " - " + n3);
		else if (n3 > n1 && n1 > n2)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n3 + " - " + n1 + " - " + n2);
		else if (n2 > n3 && n3 > n1)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n2 + " - " + n3 + " - " + n1);
		else if (n1 > n3 && n3 > n2)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n1 + " - " + n3 + " - " + n2);
		else if (n3 > n2 && n2 > n1)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n3 + " - " + n2 + " - " + n1);
	}
}

Obrigado.

3 Respostas

FearX
Solucao aceita

Uma única dica: o uso de variáveis auxiliares ajudam bastante as vezes.

Mas se quiser você encontra um exemplo daoha aqui e infinitos outros exemplos aqui

Ofidomundo
//Crie um programa para ler três números (diferentes) e imprimi-los em ordem descrescente

import javax.swing.JOptionPane;

public class Decrescente {

	public static void main (String args[]) {
		
		int n1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o 1º número: "));
		int n2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o 2º número: "));
		int n3 = Integer.parseInt(JOptionPane.showInputDialog("Digite o 3º número: "));
		
		
        Boolean n1n2 = (n1 > n2?true:false);
        Boolean n1n3 = (n1 > n3?true:false);
        Boolean n2n3 = (n2 > n3?true:false);
		
		if (n1n2 && n2n3)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n1 + " - " + n2 + " - " + n3);
		else if (!n1n2 && n1n3)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n2 + " - " + n1 + " - " + n3);
		else if (!n1n3 && n1n2)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n3 + " - " + n1 + " - " + n2);
		else if (n2n3 && !n1n3)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n2 + " - " + n3 + " - " + n1);
		else if (n1n3 && !n2n3)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n1 + " - " + n3 + " - " + n2);
		else if (!n2n3 && !n1n2)
			JOptionPane.showMessageDialog(null, "A ordem decrescente é: " + n3 + " - " + n2 + " - " + n1);
	}
}

Ps: fiz na mão por aqui, talvez tenha algum erro idiota, mas é isso!

D

Se puder usar o Math:

int maior = Math.max(n1, Math.max(n2, n3));
int menor = Math.min(n1, Math.min(n2, n3));
int mediana= n1 + n2 + n3 - maior - menor;
System.out.println("Decrescente: " + maior + " " + mediana + " " + menor);
Criado 9 de agosto de 2018
Ultima resposta 11 de ago. de 2018
Respostas 3
Participantes 4