Ajuda em exercício de if else(iniciante)

Sou iniciante em java. E estou em um exercício. Onde devo fazer um programa que receba 3 inteiros e resulte em qual é o maior e qual o menor;
Pois bem consegui resolver qual é o maior .porém estou. Com dificuldade em atribuir o menor número na programação e meu limitado conhecimento esta me impedindo. Peço um norte aos senhores:

import java.util.*;

public class Maior
{
public static void main(String[] args)
{
System.out.println(“Maior e Menor algarismo;”);
Scanner entrada = new Scanner(System.in);

	int n1,//primeiro numero
	n2,//segundo numero
	n3;//terceiro numero
	System.out.println("Digite o primeiro Número:");
	n1=entrada.nextInt();
	
	System.out.println("Digite o segundo número:");
	n2=entrada.nextInt();
	
	System.out.println("Digite o terceiro múmero");
	n3=entrada.nextInt();
	
	if (n1>n2&&n1>n3){
		System.out.printf("o numero maior é:%d",n1);}
		else{if(n2>n1&&n2>n3){
			System.out.printf("o numero maior é:%d",n2);}
			else{
				System.out.printf("o numero maior é:%d",n3);
			}
		}
	}

}

Se vc criar 2 variaveis int maior e menor e “quebrar em blocos” de if não ficaria melhor a leitura?

int maior = n1;
int menor = n1;

if (n2 > maior) {
    maior = n2;
} else if (n2 < menor) {
    menor = n2;
}

if (n3 > maior) {
    maior = n3;
} else if (n3 < menor) {
    menor = n3;
}

System.out.println("Maior: " + maior);
System.out.println("Menor: " + menor);

Algo nesse sentido ajuda?

1 curtida

Em relação a melhor compreensão do código sim rodevops, porém como o menor retorna em Else ele acaba não printando na tela e é isto que eu gostaria.

Boa noite,

Pelo o que eu vi o @rodevops tocou no ponto de legibilidade do código, você poderia usar um else if no lugar de um if dentro de um else :

if(condicao){
// se atender a condição faz isso aqui
}else if(condicao){
// senao se atender a condição faz isso aqui
else {
// senão faz algo aqui
}
1 curtida

Ajustei usando else if, na verdade eu até tinha deixado antes desse jeito, mas imaginei que ele seguiria o fluxo e realmente não prestei muita atenção ao menor (pra ser sincero nem testei esse código e estou apenas usando a lógica)…

Se der alguma zica avisa ai blz?

1 curtida

Um dica importante neste caso:
(tive esse problema com python em um exercício, (segue a logica em código simples só pra vc entender)

int menor = 999999  //isso para que o primeiro numero qualquer q seja seja menor que o 999999
int maior = 0            //pro primeiro numero ser maior que ele e ele pegar para comparar com os demais

if (menor > n1) {
    menor = n1; //menor agora tem o valor do primeiro numero
  } else {
  menor = menor //desnecessário mas só pra vc entender que o valor se mantém 
  }


//Mesma coisa no maior
if (maior < n1) {
    maior = n1; //maior agora tem o valor do primeiro numero
  } else {
  maior = maior //desnecessário mas só pra vc entender que o valor se mantém 
  } 

principal é entender essa logica, entendeu só aplicar.

Espero ter ajudado

Sua intenção é boa, mas nesses casos o ideal é sempre começar com maior e menor sendo o primeiro valor digitado pelo usuário, a partir daí sim compara-los com os outros como mostrei no exemplo acima, dessa forma vc garante que as comparações são apenas entre os números digitados sem outros valores predefinidos (0 e 999999)…

1 curtida
import java.util.*;

public class Maior {
    
    public static void main(String[] args) {
        System.out.println(“Maior e Menor algarismo;”);
        Scanner entrada = new Scanner(System.in);

        System.out.println("Digite o primeiro Número:");
        int n1 = entrada.nextInt();

        System.out.println("Digite o segundo número:");
        int n2 = entrada.nextInt();

        System.out.println("Digite o terceiro múmero");
        int n3 = entrada.nextInt();

        int maior = maior(n1, maior(n2, n3));
        int menor = menor(n1, menor(n2, n3));

        System.out.printf("o numero maior é:%d%n", maior);}
        System.out.printf("o numero menor é:%d%n", menor);}
    }

    static int maior(int a, int b) {
        if (a > b) {
            return a;
        } else {
            return b;
        }
    }

    static int menor(int a, int b) {
        if (a < b) {
            return a;
        } else {
            return b;
        }
    }    
}
3 curtidas

Existem várias soluções, conforme foi exposto por outros colegas, porém duplicando o if e mudando o sinal chegamos desejado.

import java.util.*;

public class Maior {

public static void main(String[] args) {

	System.out.println("Maior e Menor algarismo;");
	Scanner entrada = new Scanner(System.in);

	int n1, // primeiro numero
			n2, // segundo numero
			n3;// terceiro numero
	System.out.println("Digite o primeiro Número:");
	n1 = entrada.nextInt();

	System.out.println("Digite o segundo número:");
	n2 = entrada.nextInt();

	System.out.println("Digite o terceiro múmero");
	n3 = entrada.nextInt();

	// imprime sempre o maior numero
	if (n1 > n2 && n1 > n3) {
		System.out.printf("o numero maior é:%d", n1);
	} else {
		if (n2 > n1 && n2 > n3) {
			System.out.printf("o numero maior é:%d", n2);
		} else {
			System.out.printf("o numero maior é:%d", n3);
		}
	}

	// imprime sempre o menor numero
	if (n1 < n2 && n1 < n3) {
		System.out.printf("o numero menor é:%d", n1);
	} else {
		if (n2 < n1 && n2 < n3) {
			System.out.printf("o numero menor é:%d", n2);
		} else {
			System.out.printf("o numero menor é:%d", n3);
		}
	}

}

}