Olá amigos, estou tentando fazer este programa mas ao elaborar a fórmula que exibe o peso ideal está dando erros. Alguém poderia ajudar? Obrigado.
[code]import java.util.Scanner;
public class PesoIdeal{
public static void main(String[] args){
Scanner le = new Scanner(System.in);
float altura;
float pesoH;
float pesoM;
String nome, sexo, M, F, resp;
do{
System.out.printf("\n\t=================================================");
System.out.printf("\n\t\"Programa que calcula o peso ideal para uma pessoa\"\n");
System.out.printf("\n\t Digite o nome da pessoa:....");
nome = le.next();
System.out.printf("\t Digite o sexo: M/F:..");
sexo = le.next();
System.out.printf("\t Digite a altura:.....");
altura = le.nextFloat();
// fazer a formula do peso ideal
pesoH = ((72,7 * altura)-58);
pesoM = ((62,1 * altura)-44,7);
// ver se é homem ou mulher
if( sexo == "M"){
System.out.printf("\t O peso ideal do %s e' ..........", nome);
}
else if( sexo == "F"){
System.out.printf("\t O peso ideal da %s e' ...........", nome);
}
System.out.printf("\n\t proximo: (s/n).............");
resp = le.next();
}while(resp.equals ("s"));
System.out.printf("\t finalizando......");
System.out.printf("\n\t=================================================");
System.out.printf(" \n ");
}
}
Correto, alterei as fórmulas de acordo como que sugeriu e os erros acabaram, mas o programa não está executando-ás, ou seja, não está acontecendo nada. O que será que errei…? Obrigado.
você não está imprimindo a variável pesoH ou pesoM no final, está só imprimindo o nome da pessoa, talvez seja isso…
if(sexo.equals("M")){
System.out.printf("\t O peso ideal do %s e' ..........%f", nome, pesoH);
}
else if(sexo.equals("F")){
System.out.printf("\t O peso ideal da %s e' ...........%f", nome, pesoM);
}
se você me mostrar exatamente o que acontece de errado poderei te ajudar melhor
Edit:
ah, outra coisa que esqueci de citar… você comparou strings assim
if(sexo == "M")
Isso não funciona, ele não compara o valor da String, e sim o objeto… e como cada objeto aponta para uma área de memória diferente, mesmo elas possuindo o mesmo valor, são objetos diferentes, esse if nunca será verdadeiro… agora se fizer assim:
if(sexo.equals("M")
o método equals() da classe String compara o valor da String e não o objeto em si… assim funciona
[code]import java.util.Scanner;
public class PesoIdeal{
public static void main(String[] args){
Scanner le = new Scanner(System.in);
float altura;
float pesoH;
float pesoM;
String nome, sexo, M, F, resp;
do{
System.out.printf("\n\t===================================================");
System.out.printf("\n\t\"Programa que calcula o peso ideal para uma pessoa\"\n");
System.out.printf("\n\t Digite o nome da pessoa:....");
nome = le.next();
System.out.printf("\t Digite o sexo: M/F:..");
sexo = le.next();
System.out.printf("\t Digite a altura:.....");
altura = le.nextFloat();
// fazer a formula do peso ideal
pesoH = ((72.7f * altura)-58);
pesoM = ((62.1f * altura)-44.7f);
// ver se é homem ou mulher
if(sexo.equals("M")){
System.out.printf("\t O peso ideal do %s e': %.2f", nome, pesoH);
}
else if(sexo.equals("F")){
System.out.printf("\t O peso ideal da %s e': %.2f", nome, pesoM);
}
System.out.printf("\n\t proximo: (s/n).............");
resp = le.next();
}while(resp.equals ("s"));
System.out.printf("\t finalizando......");
System.out.printf("\n\t===================================================");
System.out.printf(" \n ");
}
}[/code]
você tem 2 variáveis do tipo String ‘M’ e ‘F’ que não são utilizadas em lugar nenhum, minha sugestão é que as apague do código, e também, não iniciar nomes de variáveis com letras maiúsculas.
quanto ao tópico:
pro “Resolvido” aparecer pro pessoal, você tem que alterar seu primeiro post do tópico, não o último.