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/824f376e8965001729116c4c8b0cfc20 to your computer and use it in GitHub Desktop.
Save rafarocha/824f376e8965001729116c4c8b0cfc20 to your computer and use it in GitHub Desktop.
turma-1076-desafio03-feedback-deyse-ribeiro.java
import java.util.Scanner;
import java.lang.Math;
public class Main {
public static void main(String[] args) {
//Variaveis
Scanner entrada = new Scanner(System.in);
float altura;
float peso;
double imc;
double peso_ideal;
double imc_ideal_min = 18.5;
double imc_ideal_max = 24.9;
double peso_min;
double peso_max;
//Coletando dados
System.out.println("Calculadora de IMC");
System.out.println(">Insira sua altura(cm):");
System.out.print(">");
altura = entrada.nextFloat();
System.out.println(">Insira seu peso(Kg):");
System.out.print(">");
//Calculando
peso = entrada.nextFloat();
imc = Math.round(peso*100000/(altura*altura));
imc = imc/10;
peso_ideal=Math.round(altura*altura*imc_ideal_min/10000);
peso_min=peso_ideal;
peso_max=Math.round(altura*altura*imc_ideal_max/10000);
//Resultados
System.out.println("<<<Resultados>>>");
System.out.println(">O imc é:"+imc);
if(imc < 18.5){
System.out.println(">Magreza");
}
if(imc >= 18.5 && imc <= 24.9){
System.out.println(">Normal");
}
if(imc >= 25 && imc <= 29.9){
System.out.println(">Sobrepeso");
}
if(imc>= 30 && imc <= 34.9){
System.out.println(">Obesidade Grau I");
}
if(imc >= 35 && imc <= 39.9){
System.out.println(">Obesidade Grau II");
}
if(imc > 40){
System.out.println(">Obesidade Grau III");
}
System.out.println(">O peso ideal é:"+peso_max+"Kg");
System.out.println(">A faixa de peso ideal é entre: "+peso_min+"Kg e "+peso_max+"Kg");
}
}
@rafarocha
Copy link
Author

Revisão

  • Algoritmo funcional com quase todas as etapas em 55 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 última linha
  • Fez uma apresentação discreta do programa na inicialização

Melhorias

  • Poderia ter usado else if ao invés de vários ifs independentes com &&
  • Poderia tratar de obter valor e cálculos reusados por métodos
  • 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 0.0 e Magreza
  • 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