Exercicio de Logica - Qual é a Melhor Prática

Olá, sou novo por aqui. Estou estudando Lógica de Programação em Java, onde tive a minha lógica e gostaria que coletar uma orientação dos Javanos se estou no caminho certo, joga tudo fora e faça assim… FeedBack e Criticas serão bem vindas… O exercícios pede o seguinte:

“Escreva um algoritmo que recebe 5 números inteiros. Depois, mostra qual o menor valor e o
maior valor fornecido”

A minha lógica foi a seguinte - CREIO QUE POSSA MELHORAR, MAS FUNCIONOU …

import javax.swing.JOptionPane;
/**
*

  • @author elourenco
    */
    public class ExercicioSete {

    public static void main(String[]args){

     int n1,n2,n3,n4,n5;
     
     n1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 1: "));
     n2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 2: "));
     n3 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 3: "));
     n4 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 4: "));
     n5 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 5: "));
     
      if(n1 < n2 && n1 < n3 && n1 < n4 && n1 < n5){
        JOptionPane.showMessageDialog(null, "O Valor menor é: "+n1);
     }if(n2 < n1 && n2 < n3 && n2 < n4 && n2 < n5){
        JOptionPane.showMessageDialog(null, "O Valor menor é: "+n2);
     }if(n3 < n1 && n3 < n2 && n3 < n4 && n3 < n5){
        JOptionPane.showMessageDialog(null, "O Valor menor é: "+n3);
     }if(n4 < n1 && n4 < n2 && n4 < n3 && n4 < n5){
        JOptionPane.showMessageDialog(null, "O valor menor é: "+n4);
     }if(n5 < n1 && n5 < n2 && n5 < n3 && n5 < n4){
        JOptionPane.showMessageDialog(null, "O valor menor é: "+n5);
     }if(n1 > n2 && n1 > n3 && n1 > n4 && n1 > n5){
        JOptionPane.showMessageDialog(null, "O Valor maior é: "+n1);
     }if(n2 > n1 && n2 > n3 && n2 > n4 && n2 > n5){
        JOptionPane.showMessageDialog(null, "O Valor maior é: "+n2);
     }if(n3 > n1 && n3 > n2 && n3 > n4 && n3 > n5){
        JOptionPane.showMessageDialog(null, "O Valor maior é: "+n3);
     }if(n4 > n1 && n4 > n2 && n4 > n3 && n4 > n5){
        JOptionPane.showMessageDialog(null, "O valor maior é: "+n4);
     }if(n5 > n1 && n5 > n2 && n5 > n3 && n5 > n4){
        JOptionPane.showMessageDialog(null, "O valor maior é: "+n5);
     }   
    

    }
    }

Obrigado…

Não era mais fácil se…
Você definisse apenas 3 variáveis, maior, menor e valor?
Você definisse maior como um número bem baixo e menor com um número bem alto?
Você comparasse cada valor lido com maior e menor e já fosse substituindo caso fosse maior que o maior ou menor que o menor?

Fala, Emerson.

Também comecei estudando lógica da programação com Java. Seu programa é eficaz, porém não é eficiente e isso é uma das questões que a gente sempre precisa estar olhando. Você criou várias condições no final. É claro que no seu código não vai fazer tanta diferença, mas no código de uma empresa ou de um software mais elaborado, pode fazer uma grande importância essa simplificação. Segue o meu código abaixo, para que você possa entender melhor.

int n1, n2, n3, n4, n5;

  /* 
        Seguinte, eu estabeleci duas variáveis, uma para receber o maior valor e
        outra para receber o menor. Assim, eu só preciso pegar os números que você foi 
        inserindo (n1, n2, n3, n4) e ir comparando com essa variável (que tenho como
        base para saber qual o maior e o menor). 

        Logo, depois de ter recebido todos os valores (n1, n2, n3, n4) eu crio meus
        if's para identificar qual o maior e menor valor.

        Nota: você percebe que o primeiro valor que eu comparar sempre será o 
        maior/menor? Por isso estabeleço essas variáveis como sendo 0 e a
        outra 999, para eu possa receber esse primeiro valor e depois compare
        com as outras.
    */

int maior = 0, menor = 9999;
 
n1 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 1: "));
n2 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 2: "));
n3 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 3: "));
n4 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 4: "));
n5 = Integer.parseInt(JOptionPane.showInputDialog("Digite o valor 5: "));

if (n1 >= maior) {
	maior = n1;
} else if (n2 >= maior) {
	maior = n2;
} else if (n3 >= maior) {
	maior = n3;
} else if (n3 >= maior) {
	maior = n4;
}

if (n1 <= menor) {
	menor = n1;
} else if (n2 <= menor) {
	menor = n2;
} else if (n3 <= menor) {
	menor = n3;
} else if (n3 <= menor) {
	menor = n4;
}

JOptionPane.showMessageDialog(null, "O maior valor é: " + maior);

JOptionPane.showMessageDialog(null, "O menor valor é: " + menor);

Abraço, Emerson.

1 curtida

Olá AlanMSV. Obrigado pela dica…

Foi muito construtiva…

Obrigado.

1 curtida

Olá darlan,

Vou absorver sua lógica e elaborar outro exercício parecido para fortalecer.

Obrigado,

import java.util.Scanner;

public class Exercicio {

	public static void main(String[] args) {
		int numero, maior = -999999999, menor = 999999999;
		Scanner sc = new Scanner(System.in);
		
		for(int i = 0; i < 5; i++) {
			System.out.println("Informe um número");
			numero = Integer.parseInt(sc.nextLine());
			
			if(numero > maior) {
				maior = numero;
			}
			
			if(numero < menor) {
				menor = numero;
			}
		}
		sc.close();

		System.out.println("O maior valor digitado foi: " + maior);
		System.out.println("O menor valor digitado foi: " + menor);
		
	}

}
1 curtida

Obrigado darlan.