Como faço para calcular o imc infantil ? é a mesma formula do imc de um adulto ?
public static void main(String[] args) {
double peso;
double altura;
System.out.println("Informe o seu peso");
peso = leia.nextDouble();
System.out.println("Informe a sua altura!");
altura = leia.nextDouble();
double imc;
imc = peso / (altura*altura);
if(imc < -2){
//Abaixo de -2
System.out.println("Abaixo do Normal");
//de -2 até abaixo de +1
}else if (imc >= -2 && imc <= 1){
System.out.println("Peso Normal");
//+1 até abaixo de +2
}else if (imc >= 1 && imc <= 2){
System.out.println("Sobrepeso");
}else{
System.out.println("Obesidade");
}
}
Alguém poderia me ajudar em que estou errando ?
Página onde há as regras para o cálculo do IMC.
[https://www.calculoimc.com.br/]
O problema está nos valores do IMC, na verdade eles são:
| Resultado |
Situação |
| Abaixo de 17 |
Muito abaixo do peso |
| Entre 17 e 18,49 |
Abaixo do peso |
| Entre 18,5 e 24,99 |
Peso normal |
| Entre 25 e 29,99 |
Acima do peso |
| Entre 30 e 34,99 |
Obesidade I |
| Entre 35 e 39,99 |
Obesidade II (severa) |
| Acima de 40 |
Obesidade III (mórbida) |
Então o código ficaria assim:
Scanner leia = new Scanner(System.in);
System.out.println("Informe o seu peso: ");
double peso = leia.nextDouble();
System.out.println("Informe a sua altura: ");
double altura = leia.nextDouble();
double imc = peso / (altura * altura);
if (imc < 17) {
System.out.println("Muito abaixo do peso");
} else if (imc < 18.5) {
System.out.println("Abaixo do peso");
} else if (imc < 25) {
System.out.println("Peso Normal");
} else if (imc < 30) {
System.out.println("Acima do peso");
} else if (imc < 35) {
System.out.println("Obesidade I");
} else if (imc < 40) {
System.out.println("Obesidade II (severa)");
} else {
System.out.println("Obesidade III (mórbida)");
}
Repare que não precisa declarar as variáveis em uma linha e atribuir o valor em outra, você pode fazer as 2 coisas de uma vez.
E no if, não precisa testar a mesma coisa várias vezes.
Por exemplo, aqui:
if (imc < 17) {
System.out.println("Muito abaixo do peso");
} else if (imc < 18.5) {
System.out.println("Abaixo do peso");
}
Se o IMC for menor que 17, ele entra no if.
Se não entrar no if é porque não é menor que 17, e portanto ele é maior ou igual a 17. Sendo assim, eu não preciso colocar else if (imc >= 17 && imc < 18.5), pois se chegou nesse else é porque com certeza ele é maior ou igual a 17 (se não fosse, ele teria entrado no primeiro if). Então testar isso é redudante e desnecessário, por isso eu só testo se é menor que 18.5.
O mesmo vale para os demais else if: se não entrou no else if (imc < 18.5) é porque ele não é menor que 18.5 e portanto só pode ser maior ou igual. Então no próximo else if eu só testo se é menor que 25, e assim por diante. Por fim, se chegar no último else, é porque é maior ou igual a 40.