Calcule imc

me ajudem
monte um frame que leia o peso e a altura de uma pessoa e depois calcule seu imc e classifique a pessoa conforme a seguinte tabela. sem utilizar sacnner

imc < 16 magreza grave
imc 16 a < 17 magreza moderada
imc 17 a < 18,5 magreza leve
imc 18,5 a < 25 saudavel
imc 25 a < 30 sobrepeso
imc 30 a < 35 obesidade grau 1
imc 35 a < 40 obesidade grau 2
imc >40 obesidade grau 3

Se não pode usar o scanner, tu pode usar:

Para apresentar mensagens:

JOptionPane.showMessageDialog(null, "Algum texto aqui");

Para solicitar ao usuário que informe algo:

String nome = JOptionPane.showInputDialog(null, "Qual o seu nome?");

Vc já tentou fazer algo? Tem dúvida em alguma parte?

ola eu fiz assim:

int peso, altura, imc;

altura = Integer.parseInt(area_altura.getText());
peso = Integer.parseInt(area_peso.getText());
imc = Integer.parseInt(area_imc.getText());
imc = peso / (altura * altura);

if (imc < 16) {
	System.out.println("magreza grave");
} else if (imc  < 17) {
	System.out.println("magreza moderada");
} else if (imc < 18.5) {
	System.out.println("magreza leve");
} else if (imc < 25) {
	System.out.println("saudavel");      
} else if (imc < 30) {
	System.out.println("sobrepeso");
} else if (imc < 35) {
	System.out.println("obesidade grau 1");
} else if(imc < 40) {
	System.out.println("obesidade grau 2");
} else if (imc > 40) {
	System.out.println("obesidade grau 3");
}

Acho que, em vez de usar int nas variáveis peso, altura e imc, vc deva usar double, pois haverá números com casas decimais, e isso fará que o cálculo fique próximo da realidade num cálculo de IMC.

E nos IFs vc precisa corrigir as condições. Por exemplo, nesse caso: imc 16 a < 17 magreza moderada, o IF deve ser assim: if (imc >= 16 && imc < 17).

Porquê?

Se não entra no if (imc < 16) então de certeza que no else o imc >= 16.

2 curtidas

Eita, verdade. Nem pensei nisso.

E o que acontece se o IMC é exatamente igual a 40? Não entra em nenhuma das condições. Talvez seja problema do enunciado, então tem que ver em qual dos casos cai.

Por exemplo, se fosse “maior ou igual a 40 é grau 3”, aí bastaria fazer:

...
} else if (imc < 40) {
	System.out.println("obesidade grau 2");
} else {
	System.out.println("obesidade grau 3");
}

O último else não precisaria testar nada, pois se chegou ali é porque com certeza não é menor que 40 (ou seja, é maior ou igual).