Exercício de IMC
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 {
}
}
}
}
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
Curtidas 0
Respostas
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"
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
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
17/08/2015
Ok, desculpem
GOSTEI 0
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
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
17/08/2015
Quando se tem dois valores para testar, a melhor opção é string?
GOSTEI 0
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:
E veja o conteúdo!
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
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
17/08/2015
Pois é, estou confusa com isso tambem, não sei se string é o mais indicado.
GOSTEI 0
Jothaz
17/08/2015
É sempre melhor usar número, mas as vezes temos de teste com string mesmo.
Use o equals:
Pode existir espaços nas strings;
Tente retirá-los:
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
17/08/2015
Obrigado Jothaz! Vou testar aqui.
GOSTEI 0
Janaina Mendes
17/08/2015
Se fosse uma tela de cadastro em um banco, o certo é utilizar numeros não é?
GOSTEI 0
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.
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
17/08/2015
Para um caso didatico está correto o uso de string!
GOSTEI 0
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.
Mas é sempre mais preciso utilizar números.
GOSTEI 0
Janaina Mendes
17/08/2015
Mas mesmo sendo caracteres, podemos limitar o tamanho do campo, tem como impedir o espaço?
GOSTEI 0
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().
Pra retirar os espaços pode usar: sua_string.trim().
GOSTEI 0