Ler cinco números e identificar o maior e o menor de todos

Glr eu nao to conseguindo, eu fiz assim só q nao funciona

import javax.swing.JOptionPane;

public class Exercicio24{
public static void main (String args[]){
int a = Integer.parseInt(JOptionPane.showInputDialog(“Digite o a numero”));
int b = Integer.parseInt(JOptionPane.showInputDialog(“Digite o b numero”));
int c = Integer.parseInt(JOptionPane.showInputDialog(“Digite o c numero”));
int d = Integer.parseInt(JOptionPane.showInputDialog(“Digite o d numero”));
int e = Integer.parseInt(JOptionPane.showInputDialog(“Digite o e numero”));
if( a<b && a<c && a<d && a<e){
if(b>c && b>d && b>e){
System.out.println(a+", “+b);
}
else if(c>d && c>e){
System.out.println(a+”, “+c);
if(d>e){
System.out.println(a+”, “+d);
}
else{
System.out.println(a+”, “+e);
}
}
}
else if(b<a && b<c && b<d && b<e){
if(a>c && a>d && a>e){
System.out.println(b+”, “+a);
}
else if (c>d && c>e){
System.out.println(b+”, “+c);
if(d>e){
System.out.println(b+”, “+d);
}
else{
System.out.println(b+”, “+e);
}
}
}
else if(c<a && c<b && c<d && c<e){
if(a>b && a>d && a>e){
System.out.println(c+”, “+a);
}
else if (b>d && b>e){
System.out.println(c+”, “+b);
if(d>e){
System.out.println(c+”, “+d);
}
else{
System.out.println(c+”, “+e);
}
}
}
else if(d<a && d<b && d<c && d<e){
if(a>b && a>c && a>e){
System.out.println(d+”, “+a);
}
else if (b>c && b>e){
System.out.println(d+”, “+b);
if(c>e){
System.out.println(d+”, “+c);
}
else{
System.out.println(d+”, “+e);
}
}
}
else if(e<a && e<b && e<c && e<c){
if(a>b && a>c && a>d){
System.out.println(e+”, “+a);
}
else if (b>c && b>d){
System.out.println(e+”, “+b);
if(c>d){
System.out.println(e+”, “+c);
}
else{
System.out.println(e+”, "+d);
}
}
}

}
}

Esta trabalhando da forma errada, possivelmente pensou em fazer desta forma pois são apenas 5 números, mas se fossem 500, 1000 ou 2000 como iria resolver seu problema?
Pelo o que estou vendo você deve estar aprendendo a programar e ainda não viu estruturas de repetição no seu curso.

Tenta fazer assim:

int maior, menor;
maior=a;
menor=a;

if (b>maior)
{
maior=b;
}
if(b<menor)
{
menor=b;
}

Repita o codigo acima para C, D e E. Depois ao final imprima o maior e menor.

Cara, não precisa duplicar tópicos.

import javax.swing.JOptionPane;

public class Exercicio04{
public static void main (String args[]){
int a = Integer.parseInt(JOptionPane.showInputDialog(“Digite o primeiro numero”));
int b = Integer.parseInt(JOptionPane.showInputDialog(“Digite o segundo numero”));
int c = Integer.parseInt(JOptionPane.showInputDialog(“Digite o terceiro numero”));
if( a<b && a<c && a<d && a<e){
if(b<c && b<d && b<e){
System.out.println(a+", “+e);
}
else if(c<d && c<e{
System.out.println(a+”, “+b);
}
}
else if(b<a && b<c){
if(a<c){
System.out.println(b+”, “+c);
}
else{
System.out.println(b+”, “+a);
}
}
else if(a<b){
System.out.println(c+”, “+b);
}
else{
System.out.println(c+”, "+a);
}
}
}

cara tenta fazer o maximo o possivel retrabalho pq se não seu codigo vira uma bagunça pra isso que serve os metodos

import java.util.Scanner;

public class retornaMaiorEMenor {

	static int retornaMaior(int[] vetor){
	    int maior = vetor[0];
	    for (int i = 1 ; i < vetor.length; i++){
	       if (vetor[i] > maior){
	           maior = vetor[i];
	       } 
	    }
	    return(maior);
	}
	
	static int retornaMenor(int[] vetor){
	    int menor = vetor[0];
	    for (int i = 1 ; i < vetor.length; i++){
	       if (vetor[i] < menor){
	           menor = vetor[i];
	       } 
	    }
	    return(menor);
	}
	
	public static void main(String[] args) {
		
		int[] vetor = new int[4];
		Scanner dados = new Scanner(System.in);
		    
		    for (int i = 0 ; i < 4; i++){
		        System.out.println("digite o " + (i + 1) + "ª valor: ");
		    	vetor[i] = dados.nextInt();
		    }
		    
		    System.out.println("maior valor:" + retornaMaior(vetor));
		    System.out.println("menor valor:" + retornaMenor(vetor));
	}
}

Nem sempre dividir o código em métodos significa melhorá-lo.
Veja, você criou 2 loops distintos, quando poderia resolver o problema com apenas 1.

public class retornaMaiorEMenor {

    static int[] processa(int[] vetor) {
        int[] resultado = new int[2];
        int maior = -1, menor = 99999999;
        for (int i = 1 ; i < vetor.length; i++){
            if (vetor[i] > maior){
                resultado[0] = vetor[i];
            } 
            if (vetor[i] < menor){
                resultado[1] = vetor[i];
           }
        }
        return resultado;
    }

    public static void main(String[] args) {
	
        int[] vetor = new int[4];
        Scanner dados = new Scanner(System.in);
	    
        for (int i = 0 ; i < 4; i++){
            System.out.println("digite o " + (i + 1) + "ª valor: ");
            vetor[i] = dados.nextInt();
        }
        int resultado[] = processa(vetor);
        System.out.println("maior valor: " + resultado[0]);
        System.out.println("menor valor: " + resultado[1]);
    }
}

Outro ponto, teu código não inicializa as variáveis maior e menor, logo, você terá o retorno dos métodos diferentes do que realmente deveriam ser.

1 curtida

vdd @darlan_machado vc tem razão

Este é um algoritmo clássico, eu cheguei a usar o mesmo algumas vezes, quando ensinava lógica e java básico.
É interessante ver como as pessoas sentem dificuldade ao implementar algo assim.

esse método poderia ser feito também assim sem as varia vens maior e menor, e com isso não inventar valores absurdos para essas variavens

static int[] processa(int[] vetor) {
    int[] resultado = new int[2];
    resultado[0] = vetor[0];
    resultado[1] = vetor[0];
    for (int i = 1; i < vetor.length; i++) {
        if (vetor[i] > resultado[0]) {
            resultado[0] = vetor[i];
        }
        if (vetor[i] < resultado[1]) {
            resultado[1] = vetor[i];
        }
    }
    return (resultado);
}

Os valores absurdos são chamados de valores de inicialização. Existe uma lógica para tal e é só isso que você deve ter em mente.
Como eu comentei, este algoritmo (e suas variações) é muito utilizado quando se está aprendendo lógica de programação, especificamente, vetores e visam dar a quem aprende a tarefa de entender o problema, identificar uma maneira de solucionar e implementar essa solução.
Existem inúmeras maneiras de resolver tal problema e a tua última solução é uma das mais interessantes.
Eu já vi exercícios com a mesma proposta que pediam a posição onde o maior e o menor números foram encontrados, qual a média dos valores informados e se a diferença entre o maior e a média é igual ao menor, etc.

Eu sempre prefiro iniciar o maior e o menor com o valor que está primeira posição do vetor, acredito que seja a forma mais correta de fazer isso. Se o valor da primeira posição não for nem o maior nem o menor ele será substituído.

Opções. Você pode gostar de laranja e eu preferir abacate, cada um faz a seu gosto.
O resultado muda? O algoritmo terá um custo maior de processamento?
Se não, então eu fico com o meu jeito.

Tem chance de mudar sim, pensa que existe a possibilidade do usuário digitar valores como -2,-3,-4…
Assim o resultado final do maior seria -1 um valor que sequer o usuário haveria inserido.

muita calma nessa hora, @darlan_machado vc falou que ja deu aula mais por favor seja mais humilde reconheça quando o seu código não foi bem feito como eu reconheci que o meu não foi bem feito quanto o seu, não importa quanto tempo vc tenha de carreira, mais estamos aqui no Guj para aprendermos uns com os outros