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

7 respostas
Sam35

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.

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

7 Respostas

Rodrigo_Sasaki

quais seriam os erros, amigo?

Rodrigo_Sasaki

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í

Sam35

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

Sam35

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.

Rodrigo_Sasaki

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:

Sam35

Muitíssimo obrigado, funcionou corretamente.

Veja:

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

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!

Criado 2 de novembro de 2011
Ultima resposta 2 de nov. de 2011
Respostas 7
Participantes 2