Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rafarocha/aeee83d13caf86dc4d379c787a8724a2 to your computer and use it in GitHub Desktop.
Save rafarocha/aeee83d13caf86dc4d379c787a8724a2 to your computer and use it in GitHub Desktop.
turma-1076-desafio03-feedback-sylas-clozel.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Informe a sua altura em m");
Scanner leitor = new Scanner(System.in);
System.out.print(">");
double altura = leitor.nextDouble();
System.out.println("Informe seu peso");
System.out.print(">");
double peso = leitor.nextDouble();
double imc = peso/(Math.pow(altura,2));
System.out.printf("O valor de seu IMC é: %.2f \n" ,imc);
if (imc < 18.5){
System.out.println("Corresponde a Magreza na escala de índice corporal");
} else if (imc < 24.9) {
System.out.println("Corresponde a Normal na escala de índice corporal");
}
else if ( imc < 34.9){
System.out.println("Corresponde a obesidade Grau I na escala de índice corporal");
}else if ( imc < 39.8){
System.out.println("Corresponde a obesidade Grau II na escala de índice corporal");
}
else{
System.out.println("Corresponde a obesidade Grau III na escala de índice corporal");
}
double pesoIdeal = Math.pow(altura,2) * 24.9;
double pesoIdealI = Math.pow(altura,2) * 18.5;
System.out.printf("Seu peso ideal é %.2f \n", pesoIdeal);
System.out.printf("Para manter seu IMC normal seu peso pode variar de" +
" %.2f a %.2f ", pesoIdealI,pesoIdeal);
}
}
@rafarocha
Copy link
Author

Revisão

  • Algoritmo funcional com todas as etapas em 34 linhas totais
  • Atendeu os principais cenários básicos de cálculos e tipos
  • Boa distribuição linear da lógica de negócio
  • Bom uso do printf com %.1f

Melhorias

  • Não atendeu quando a entrada for zero pois retornou dados NaN e 0.0
  • Evite sempre que puder ultrapassar as 80 colunas.
  • Não tratou valores quando inválidos, igual a zero ou negativos
  • Não fez uma discreta apresentação do programa na inicialização
  • Em próxima oportunidade tratar o close com try/catch conforme indicado link
  • Poderia ter constantes para faixa de valores de verificação e textos fixos
  • Formas de obter valor e cálculos poderiam ser reusados por métodos
    • Por exemplo ao obter dados de entrada do mesmo tipo embora propósitos diferentes
    • Há muitas oportunidades aqui. Explore isto!
  • Evite ter todas as linhas uma após outra, juntas.
    • Faça uma quebra de linha imediatamente após o trecho lógico
    • Vá em nossa página e consulte as referências sobre Refactoring e Técnicas

Referências

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