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).