Exercício de IMC

Java

17/08/2015

Boa tarde galera, sou novo no fórum, e essa é minha primeira postagem. Estou começando no java agora, e como tudo é novo, tenho algumas dificuldades. Estou fazendo um exercício de cálculo do IMC, na qual consiste da seguinte forma. Peso ideal para homens (72.7 * altura) - 58; Para mulheres (62,1 * altura) - 44,7; Inclusive são exercícios do livro da Sandra Puga e Gerson Rissetti, acredito que muito de vocês conheçam este livro. Enfim, no meu código, quando declaro as String M, F, o programa não reconhece o valor, portanto não faz o cálculo, já coloquei como int recebendo um valor, mas também não obtive sucesso. Agradeço a ajuda.

import javax.swing.*;

public class Ex7_IMC {
public static void main(String args[]) {
float peso, altura;
String sexo, F, M;
sexo = JOptionPane.showInputDialog(" Digite o Sexo ");
peso = Float.parseFloat(JOptionPane.showInputDialog(null, " Digite o Peso "));
altura = Float.parseFloat(JOptionPane.showInputDialog(null, " Digite a altura "));
if (sexo == M) {
if (peso > (72.7 * altura) - 58) {
JOptionPane.showMessageDialog(null, " Você está acima do peso ");

} else {
JOptionPane.showMessageDialog(null, " O seu peso está normal ");
}
} else {
if (sexo == F) {
if (peso > (62.1 * altura) - 44.7) {
JOptionPane.showMessageDialog(null, " Você está acima do peso ");
} else {
JOptionPane.showMessageDialog(null, " O seu peso está normal ");
}
} else {

}
}
}
}
Helbert Márcio

Helbert Márcio

Curtidas 0

Respostas

Janaina Mendes

Janaina Mendes

17/08/2015

Tentando entender seu código!

sempre que postar um código, insira-o entre as tags code, "inserir código"


import javax.swing.*;

public class Ex7_IMC {
public static void main(String args[]) {
float peso, altura;
String sexo, F, M;
sexo = JOptionPane.showInputDialog(" Digite o Sexo ");
peso = Float.parseFloat(JOptionPane.showInputDialog(null, " Digite o Peso "));
altura = Float.parseFloat(JOptionPane.showInputDialog(null, " Digite a altura "));
if (sexo == M) {
if (peso > (72.7 * altura) - 58) {
JOptionPane.showMessageDialog(null, " Você está acima do peso ");

} else {
JOptionPane.showMessageDialog(null, " O seu peso está normal ");
}
} else {
if (sexo == F) {
if (peso > (62.1 * altura) - 44.7) {
JOptionPane.showMessageDialog(null, " Você está acima do peso ");
} else {
JOptionPane.showMessageDialog(null, " O seu peso está normal ");
}
} else {

}
}
}
} 

GOSTEI 0
Jothaz

Jothaz

17/08/2015

Ao postar um código use a tag code [img]http://arquivo.devmedia.com.br/forum/imagem/418027-20150817-144724.png[/img] assim fica mais fácil a leitura e consequentemente a ajuda.
GOSTEI 0
Helbert Márcio

Helbert Márcio

17/08/2015

Ok, desculpem
GOSTEI 0
Jothaz

Jothaz

17/08/2015

Vou lhe passar o caminho e você tenta rodar, não sei se vai rodar porque não tenho o java instalado na máquina que estou usando.

import javax.swing.*;
 
public class Ex7_IMC {
	public static void main(String args[]) {
		float peso, altura;

		float pesoCalc;

		String sexo, F, M;
		sexo = JOptionPane.showInputDialog(" Digite o Sexo ");
		peso = Float.parseFloat(JOptionPane.showInputDialog(null, " Digite o Peso "));
		altura = Float.parseFloat(JOptionPane.showInputDialog(null, " Digite a altura "));
     
	    pesoCalc = (62.1 * altura) - 44.7);
		
		if ((sexo == 'M') || (sexo == 'm')) {
			if (peso > pesoCalc) 
				JOptionPane.showMessageDialog(null, " Você está acima do peso ");
			 else 
				JOptionPane.showMessageDialog(null, " O seu peso está normal ");
		} else if ((sexo == 'F') || (sexo == 'f')) {
			if (peso > pesoCalc) 
				JOptionPane.showMessageDialog(null, " Você está acima do peso ");
			 else 
				JOptionPane.showMessageDialog(null, " O seu peso está normal ");
	
		}
	}
}
GOSTEI 0
Helbert Márcio

Helbert Márcio

17/08/2015

Aconteceu igual ao que postei acima, parece que o código processa, mas não mostra o resultado, não imprime. Acredito que ele não está reconhecendo a String como um valor.
GOSTEI 0
Janaina Mendes

Janaina Mendes

17/08/2015

Quando se tem dois valores para testar, a melhor opção é string?
GOSTEI 0
Jothaz

Jothaz

17/08/2015

Seguinte agora começa o aprendizado, qual IDE você esta usando?

Então use a opção de debug e comece a executar o código linha a linha para ver o que esta acontecendo.

Ou mande imprimir os valores das variáveis:



    sexo = JOptionPane.showInputDialog(" Digite o Sexo ");
    peso = Float.parseFloat(JOptionPane.showInputDialog(null, " Digite o Peso "));
    altura = Float.parseFloat(JOptionPane.showInputDialog(null, " Digite a altura "));
      
    pesoCalc = (62.1 * altura) - 44.7);

	System.out.println(sexo);
	System.out.println(peso);
	System.out.println(altura);
	System.out.println(pesoCalc);


E veja o conteúdo!
GOSTEI 0
Helbert Márcio

Helbert Márcio

17/08/2015

Creio que não Janaína, quando realizei esse mesmo código substituindo M por (1) e F por (2), o programa funcionou corretamente, porém queria que ao meu perguntar o sexo, colocasse uma String M ou F. Por isso que estou com dúvida.
GOSTEI 0
Janaina Mendes

Janaina Mendes

17/08/2015

Pois é, estou confusa com isso tambem, não sei se string é o mais indicado.
GOSTEI 0
Jothaz

Jothaz

17/08/2015

É sempre melhor usar número, mas as vezes temos de teste com string mesmo.


Use o equals:

 if ((sexo.equals("M")|| (sexo.equals("m"))) {



Pode existir espaços nas strings;

Tente retirá-los:
 if ((sexo.trim() == 'M') || (sexo.trim() == 'm')) {
GOSTEI 0
Helbert Márcio

Helbert Márcio

17/08/2015

Obrigado Jothaz! Vou testar aqui.
GOSTEI 0
Janaina Mendes

Janaina Mendes

17/08/2015

Se fosse uma tela de cadastro em um banco, o certo é utilizar numeros não é?
GOSTEI 0
Jothaz

Jothaz

17/08/2015

Seria criado uma tabela e seria usado o id, que seria numérico.

Ou seria usado em um combobox, apresentando a descrição ma usando como value números.

Mas com o .equals("") vai resolve o problema da verificação no caso acima.
GOSTEI 0
Janaina Mendes

Janaina Mendes

17/08/2015

Para um caso didatico está correto o uso de string!
GOSTEI 0
Jothaz

Jothaz

17/08/2015

Para testar poucos caracteres (vamso dizer até 3) não existe problemas em usar string. Só deve atentar para que poden conter espaões (brancos) antes e depois da string e que o Java é case-sensitive então "a" e diferente de "A".

Mas é sempre mais preciso utilizar números.
GOSTEI 0
Janaina Mendes

Janaina Mendes

17/08/2015

Mas mesmo sendo caracteres, podemos limitar o tamanho do campo, tem como impedir o espaço?
GOSTEI 0
Jothaz

Jothaz

17/08/2015

No input do campo pode-se limitar o tamanho, vai depender do que você esta usando, Java ou Web, por exemplo.

Pra retirar os espaços pode usar: sua_string.trim().
GOSTEI 0
POSTAR