Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafarocha/62b82f74bd6f6f21e2c36dfbca8024dc to your computer and use it in GitHub Desktop.
Save rafarocha/62b82f74bd6f6f21e2c36dfbca8024dc to your computer and use it in GitHub Desktop.
turma-1076-desafio03-feedback-carlos-luis.java
import java.util.Scanner;
class CalculadoraIMC {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Digite sua altura em metros: ");
double altura = scanner.nextDouble();
System.out.print("Digite seu peso em quilogramas: ");
double peso = scanner.nextDouble();
double imc = calcularIMC(peso, altura);
String classificacao = getClassificacaoIMC(imc);
System.out.printf("Seu IMC é: %.2f\n", imc);
System.out.println("Classificação: " + classificacao);
double imcIdeal = 24.9;
double pesoIdeal = calcularPesoIdeal(altura, imcIdeal);
System.out.printf("Seu peso ideal é: %.2f\n", pesoIdeal);
System.out.printf("Faixa de Peso Ideal: %.2f até %.2f\n", pesoIdeal * 0.9, pesoIdeal * 1.1);
scanner.close();
}
private static double calcularIMC(double peso, double altura) {
return peso / Math.pow(altura, 2);
}
private static String getClassificacaoIMC(double imc) {
if (imc < 18.5) {
return "Abaixo do Peso";
} else if (imc < 24.9) {
return "Peso Normal";
} else if (imc < 29.9) {
return "Sobrepeso";
} else if (imc < 34.9) {
return "Obesidade Grau I";
} else if (imc < 39.9) {
return "Obesidade Grau II";
} else {
return "Obesidade Grau III";
}
}
private static double calcularPesoIdeal(double altura, double imcIdeal) {
return Math.pow(altura, 2) * imcIdeal;
}
}
@rafarocha
Copy link
Author

Revisão

  • Algoritmo funcional com quase todas as etapas em 52 linhas totais
  • Atendeu os principais cenários básicos de cálculos e tipos
  • Manteve a faixa das 80 colunas por linha de código, exceto ao indicar a faixa de peso ideal
  • Mandou bem na implementação ao obter valor e cálculos reusados por métodos

Melhorias

  • Poderia ter feito uma apresentação discreta do programa na inicialização
  • Poderia implementar constantes para faixa de valores de verificação
    • Poderia haver para textos fixos também
  • Faltou tratar valores quando inválidos, igual a zero ou negativos.
  • Não atendeu quando a entrada for zero pois retornou dados NaN e Obesidade Grau III
  • Em próxima oportunidade tratar o close com try/catch conforme indicado link

Referências

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment