GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Calculo IMC


#1

Olá pessoal. Sou iniciante em JAVA e tenho um exercicio, qual não consegui ainda solucionar. Por favor, se alguem puder colaborar dando dicas, me auxiliando a compreender e a resolver o mesmo ficarei muito grato.

[Exercicio]

Defina uma classe Java para representar uma pessoa. Uma pessoa, no nosso caso, possui os seguintes atributos: Nome, Idade, Altura, Peso, Sexo.

A classe deve possuir um método para calcular o IMC (Índice de Massa Corpórea) de uma pessoa e mostrar de acordo com os índices abaixo, sua categoria. O IMC é obtido através da divisão do peso pela altura ao quadrado e é interpretado da seguinte forma:
? IMC <= 18,5: Abaixo do peso normal
? 18,5 < IMC <= 25: Peso Normal
? 25 < IMC <= 30: Acima do peso normal.
? IMC > 30: Obesidade

IMC.java
public class IMC {

public float CalculoImc(float peso, float altura){

float imc;
imc=(peso)/(altura*altura);
return imc;

}
}

PessoaCalculoIMC.java
import javax.swing.JOptionPane;

public class PessoaCalculoIMC {

public static void main(String args[]){
IMC a=new IMC();

float ResultadoIMC;
String Peso=JOptionPane.showInputDialog("Digite o Peso");

float peso=Float.parseFloat(Peso);
String Altura=JOptionPane.showInputDialog("Digite a Altura");

float altura=Float.parseFloat(Altura);
ResultadoIMC=a.CalculoImc(peso, altura);
System.out.println(ResultadoIMC);

if (ResultadoIMC<=18.5)
System.out.println("Abaixo do peso normal");

if (18.5 < ResultadoIMC && ResultadoIMC <= 25)
System.out.println("Peso normal");

if (25 < ResultadoIMC && ResultadoIMC<=30);
System.out.println("Acima do peso normal");

if( ResultadoIMC > 30)
System.out.println("Obsidade");

}
}

Bem consegui fazer até aqui.
Segue as dúvidas:

1º O calculo as vezes apresenta duas resposta, será que errei no IF ou no &&?

2º Observei que se digitar (,) na altura o programa da erro. Como faço para aceitar a virgula na digitação? (ou é sempre ponto que se usa mesmo?)

3º Fiz uma classe pessoa em separado com os atributos, porem ainda estou em dúvida de como usar. É possivel colocar estes atributos dentro na classe IMC.java?

Muitas duvidas né? por favor pessoal preciso de um norte ai pra tentar solucionar o exercício.

Obrigado.


#2

Quanto a estrutura de seleção if, poderia ser assim:

[color=blue]
if( ResultadoIMC &gt 30 )

System.out.println("Obesidade");

else if (ResultadoIMC &gt 25);

System.out.println("Acima do peso normal");

else if (ResultadoIMC &gt 18.5)

System.out.println("Peso normal");

else

System.out.println("Abaixo do peso normal");

[/color]

Quanto ao ponto (.) ou virgula (,), ACHO que tem que ser sempre ponto(.)

Quanto as variáveis de instância:

é possivel utilizar sim.

ex.:

[color=red]
class Pessoa {
String nome;
int idade;
}[/color]

[color=green]
public class Utiliza {
public static void main (String[] args) {
Pessoa pessTeste = new Pessoa();

  pessTeste.nome = &quot;Fulano&quot;;

}
}[/color]


#3

Desculpe, mas estou enviando novamente, não abro mão da Identação.

Quanto a estrutura de seleção if, poderia ser assim:

if( ResultadoIMC &gt 30 )
   System.out.println("Obesidade");
else if (ResultadoIMC &gt 25)
   System.out.println("Acima do peso normal");
else if (ResultadoIMC &gt 18.5)
   System.out.println("Peso normal");
else
   System.out.println("Abaixo do peso normal");

Quanto ao ponto (.) ou virgula (,), ACHO que tem que ser sempre ponto(.)

Quanto as variáveis de instância:

é possivel utilizar sim.

ex.:

class Pessoa {
   String nome;
   int idade;
}

public class Utiliza {
   public static void main (String[] args) {
      Pessoa pessTeste = new Pessoa();
      pessTeste.nome = "Fulano";
   }
}

#4

putz... que bobeira, eu poderia simplemente ter editado a primeira mensagem... mas ainda vou ficar bom nesse fórum...

Ah, e acho que ficaria legal, já que as entradas são no modo gráfico, as saídas também serem no modo gráfico ou tudo no modo texto... é só uma opinião...

t+


#5

Valeu brother. Da para entender sim, fique tranquilo e aliás o que vale é a inteção de colaborar.

Mas veja só.

Alterei no programa conforme sugerido, porem esta dando erro de syntax no segundo else. Alterei para if e executou, porem ainda continuo com o problema de apresentar duas respostas.

Ex: Peso=80 e Altura=1.80
[color=blue]
Resultado do IMC=24.69136
[/color]
como resposta do sysout é apresentado:
[color=blue]
Acima do peso normal
Peso normal
[/color]

Outra dúvida.
[color=blue]
fiz uma classe PessoaAtribute.java
[/color]

public class PessoaAtribute {
	String NomePessoa;
	int idade;
	int altura;
	int peso;
	String sexo;	
	public String getNome(){
		return NomePessoa;
	}
	public int getIdade(){
		return idade;
	}
	public int getAltura(){
		return altura;
	}
	public int getPeso(){
		return peso;
	}
	public String getSexo(){
		return sexo;
	}
}

Tem como PessoaCalculoIMC.java pegar os atributos e utilizar o peso e a altura digitada para fazer o calculo sem ter que pegar duas vezes a informação? e posteriormente imprimir?:

Exemplo:
Nome: Eduardo
Idade: 26
Altura: 1.80
Peso: 80
Sexo: Masculino
IMC: 24.69136
Acima do Peso

estou utilizando tres .java
PessoaAtribute.java (Contem os atributes de pessoa)
IMC.java (Onde tem a formula para o calculo)
PessoaCalculoIMC.java (Pego os dados para fazer o calculo)

ta certo ou dava para fazer em apenas duas classes?

Abraço. T+


#6

Fiz o teste da estrutura if, como está abaixo, e funcionou tudo certinho.
E altura/peso não podem ser int "1.8".

class testeif {
   public static void main ( String [] args ) {
      double ResultadoIMC = 80/3.24;
      if( ResultadoIMC &gt 30 )
	System.out.println("Obesidade");
      else if (ResultadoIMC &gt 25)
    	System.out.println("Acima do peso normal");
      else if (ResultadoIMC &gt 18.5)
    	System.out.println("Peso normal");
      else
    	System.out.println("Abaixo do peso normal");
   }
}

#7

Fiz testes e esta perfeito. Até onde pude observar, o mesmo esta apresentando os resultados corretamente. Muito obrigado pela colaboração.

Agora falta mesmo é implementar a classe pessoa, juntamente com este calculo e apresentar um resultado só.

É possivel pegar a altura e o pessoa da classe "PessoaAtribute" juntamente com as outras infomações como nome, sexo e etc e apresentar em uma sequencia unica? Pode me dar um norte referente a isso?

Exemplo:
Nome: Eduardo
Idade: 26
Altura: 1.80
Peso: 80
Sexo: Masculino
IMC: 24.69136
Acima do Peso

Grato


#8

Eu poderia utilizar este aplicativo e colocar num celular que 'possua' java?
Ou eu teria que fazer um aplicativo me.


#9

rapaz... não desenterre tópicos... você acabou de desenterrar um de quatro anos atrás : \


#10

mas a 4 anos atrás nem pensava em programar em java :confused:
sou novato pelo guj e programando java e queria tirar a minha duvida

:frowning:


#11

Teria que fazer um novo projeto pra dispositivos móveis. Esse projeto não gera um .jad e o .jar criado não possui mtas classes da versão SE.


#12

Crie um novo tópico e pergunte. As pessoas vão responder numa boa.


#13