PROGRAMA QUE EXIBE O PESO IDEAL DE UMA PESSOA. Dúvidas - "RESOLVIDO"

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 ");
  }
  }

[/code]

quais seriam os erros, amigo?

experimente alterar

por isso:

    pesoH = ((72,7 * altura)-58);  
    pesoM = ((62,1 * altura)-44,7); 
    pesoH = ((72.7F * altura)-58);  
    pesoM = ((62.1F * altura)-44.7F);  

acho que essa vírgula que ta dando pau aí

Os erros são exatamente nas fórmulas. Se colocá-las como comentário o programa compila.
Veja:

mostar assim: ‘)’ expected e ilegal start of expresssion

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 :slight_smile:

Muitíssimo obrigado, funcionou corretamente.

Veja:

[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]

que bom que funcionou!

só uns detalhes…

quanto ao código:

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.

Espero ter ajudado,

Abraço!