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);
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)…
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.
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)…
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;
}
}
}
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);
}
}
}