import java.util.*;
public class IMC {
public static void main(String[] args) {
double pesoPessoa;
double alturaPessoa;
Scanner iou = new Scanner(System.in);
System.out.println("digite o peso em kg: ");
pesoPessoa = iou.nextDouble();
System.out.println("digite a altura em metros: ");
alturaPessoa = iou.nextDouble();
IMC abc = new IMC();
abc.calcularIMC(pesoPessoa, alturaPessoa);
}
public void calcularIMC(double peso, double altura){
double Imc1 = peso / (altura * altura);
if(Imc1 < 18.5){
System.out.println("abaixo do peso");
} else if (Imc1 >= 18.5 && Imc1 <= 24.9){
System.out.println("peso normal");
} else if (Imc1 >= 25 && Imc1 <= 29.9){
System.out.println("Acima do peso");
}else {
System.out.println("Você está obeso!");
}
}
}
O problema desse codigo é que quando coloco 68 kilos e 1,65 metros o calculo seria
Imc = 68 / (1,65*1,65);
Imc = 24,97
o erro está no if (Imc1 >= 18.5 && Imc1 <= 24.9) que deve aparece uma mensagem dizendo "peso normal",
mas como tem uma casa decimal a mais que 24.9 ele deveria ir para o segundo if (Imc1 >= 25 && Imc1 <= 29.9)
com a mensagem "Acima do peso", só que ele esta indo para a ultima mensagem "Voce esta obeso" Como faço para
resolver isso?
obs: sendo que não pode alterar o if ja que é um dado da questão
Se é 24,97 não é maior do que 25 logo não vai entrar no if que tu queres.
Conforme fizeste para o 18.5, que usaste menor num if e maior ou igual no outro, deves fazer para este caso e usar 24.9 ou 25 nos dois if, com o igual em uma das condições.
[quote=maiden][code]
import java.util.*;
public class IMC {
public static void main(String[] args) {
double pesoPessoa;
double alturaPessoa;
Scanner iou = new Scanner(System.in);
System.out.println("digite o peso em kg: ");
pesoPessoa = iou.nextDouble();
System.out.println("digite a altura em metros: ");
alturaPessoa = iou.nextDouble();
IMC abc = new IMC();
abc.calcularIMC(pesoPessoa, alturaPessoa);
}
public void calcularIMC(double peso, double altura){
double Imc1 = peso / (altura * altura);
if(Imc1 < 18.5){
System.out.println("abaixo do peso");
} else if (Imc1 >= 18.5 && Imc1 <= 24.9){
System.out.println("peso normal");
} else if (Imc1 >= 25 && Imc1 <= 29.9){
System.out.println("Acima do peso");
}else {
System.out.println("Você está obeso!");
}
}
}
[/code]
O problema desse codigo é que quando coloco 68 kilos e 1,65 metros o calculo seria
Imc = 68 / (1,65*1,65);
Imc = 24,97
o erro está no if (Imc1 >= 18.5 && Imc1 <= 24.9) que deve aparece uma mensagem dizendo "peso normal",
mas como tem uma casa decimal a mais que 24.9 ele deveria ir para o segundo if (Imc1 >= 25 && Imc1 <= 29.9)
com a mensagem "Acima do peso", só que ele esta indo para a ultima mensagem "Voce esta obeso" Como faço para
resolver isso?
obs: sendo que não pode alterar o if ja que é um dado da questão[/quote]
Aconselho a fazer apenas um teste por [color=blue]if[/color] nesse caso - se o número não for menor que 18.5, vai ser maior ou igual a 18.5 no [color=blue]else[/color]
if (imc1 < 18.5) {
...
} else if (imc1 < 25.0) {
...
} else if (imc1 < 30.0) {
...
} else { // >= 30.0
...
}
Obs: por convenção variáveis em Java devem iniciar com letra minúscula.