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

Ajuda para fazer um programa para calcular IMC(indice de massa corporal)


#1

Boa noite sou iniciante em java e estou bem perdido preciso montar esse programa mas o que fiz ta dando erra e não sei o que fazer. Agradeço se puderem me ajudar. obrigado

. O cálculo do índice de massa corporal de uma pessoa (IMC) é o resultado do peso da pessoa dividido por sua altura ao quadrado.
A avaliação desse índice indica se a pessoa está acima ou abaixo do peso de acordo com a seguinte tabela:

Faça um programa com as seguintes características:

a) Defina uma classe pessoa com os atributos privados: nome, idade, sexo, peso e altura.
Além dos métodos públicos de acesso aos atributos, crie dois novos métodos:
calculoDoIMC ? Para calcular o índice de massa corporal da pessoa
avaliacaoDoIMC ? Retornar a condição de acordo com a tabela acima. (3,5 pontos)

b) Crie uma classe para testar o programa que leia os dados de N pessoas, armazene em um vetor e ao final exiba na tela o nome, o IMC e a avaliação de cada pessoa. (3,5 pontos).

esse foi o codigo que criei

public class Pessoa{
private string Nome, Sexo;
private int Idade;
private float Peso, Altura;

public void setNome(string pNome){
	Nome= pNome;
}

public void setSexo(string pSexo){
	Sexo= pSexo;
}

public void setIdade(int pIdade){
	Idade= pIdade;
}

public void setPeso(float pPeso){
	Peso= pPeso;
}

public void setAltura(float pAltura){
	Altura= pAltura;
}

public string getNome(){
	return Nome;
}

public string getSexo(){
	return Sexo;
}

public int getIdade(){
	return Idade;
}

public float getPeso(){
	return Peso;
}	

public float getAltura(){
	return Altura;
}

}

public class Imprimir{

for ( int j= 0;j<cont;j++){
	JOptionPane.showMessageDialog(null,"Nome"+p[i].getNome());
	JOptionPane.showMessageDialog(null,"IMC"+calculoDoIMC[j]);
	JOptionPane.showMessageDialog(null,"Avaliação"+avaliacaoDoIMC[j]);
}

}

import javax.swing.*;
public class CalculaIMC{
public static void main(String args[]){
public int Cont = 1;

Pessoa p[]= new Pessoa[Cont];
for (int i= 0;i<Cont;i++){
	p[i]= new Pessoa();
	p[i].setNome(JOptionPane.showInpultDialog("Entre como o Nome"));
	p[i].setSexo(JOptionPane.showInpultDialog("Entre como o Sexo"));
	p[i].setIdade(Integer.parseInt(JOptionPane.showInpultDialog("Entre com a Idade")));
	p[i].setPeso(Float.parseFloat(JOptionPane.showInpultDialog("Entre com o Peso")));
	p[i].setAltura(Float.parseFloat(JOptionPane.showInpultDialog("Entre com a Altura")));
	Cont= Cont + 1;
	public double CalculoDoIMC[i](double p[i].getPeso(), double p[i].getAltura()){
		return p[i].getPeso() / (Math.pow(p[i].getAltura(),2));
	}

	public string avaliacaoDoIMC[i](string p[i].getSexo(), double CalculoDoIMC){
		if (p[i].getSexo() == "f"){
			if (CalculoDoIMC < 19.1){
			 return "Abaixo do peso ideal";
			 }
			else if (CalculoDoIMC < 25.8){
					return "No peso ideal";
					}
				else if (CalculoDoIMC < 27.3){
						return "Marginalmente acima do peso";
						}
					else if (CalculoDoIMC < 32.3){
							return "Acima do peso ideal";
							}
						else
							return "Obeso";

		}
		else if (p[i].getSexo() == "m"){
				if (CalculoDoIMC < 20.7){
					return "Abaixo do peso ideal";
					}
				else if (CalculoDoIMC < 26.4){
						return "No peso ideal";
						}
					else if (CalculoDoIMC < 27.8){
							return "Marginalmente acima do peso";
							}
						else if (CalculoDoIMC < 31.1){
								return "Acima do peso ideal";
								}
							else
								return "Obeso";
		}
	}


}	

Imprimir= new Imprimir();

System.exit(0);
}
}


#2

http://www.youtube.com/watch?v=-3yjFXcVWg0


#3

Oi,

Da uma olhadinha aq,talvez ajude:http://www.guj.com.br/posts/list/218856.java

Aq também:http://www.rodrigocordula.com.br/javagraf2.php

Boa Sorte! :wink:


#4

Meu caro.
Vou te dar uma ajudinha baseado nesse código.
Não vou te ensinar a fazer, mas lhe mostar os erros que esta cometendo.

Você quer imprimir certo?
Antes disso, não testei, mas me parece, a olho nu, e levando em conta o horario, que está tudo certo.

Você tem uma classe Imprimir.
O papel dessa classe é imprimir certo?
Mas você quer acessar um objeto Pessoa e essa classe não tem acesso a ela. Esse pi dentro dela é com ose fosse uma variável da classe. Entendeu?
A classe é a receita do objeto, assim como a receita do bolo. Compara as classes Pessoa e Imprimir. Entendeu a diferença?
Cria um método em pessoa para imprimir e passe como parêmetro um objeto do tipo Pessoa. Entendeu?

Ao tentar imprimir você digitou assim.

Imprimir = new Imprimir();

Imprimir é uma classe e você não pode instanciar um novo objeto Imprimir na própria classe. Precisa dar um nome.

Imprimir imprimir = new Imprimir();

Desta forma está correto.

Uma outra dica. Você pode construir um construtor com parâmetros, já que a função da sua classe de calcular o IMC é apenas calcular em cima de uma pessoa.
Vai que alguém esquece de instanciar essa pessoa? Então ela seria inutil. No próprio construtor da classe já crie o objeto Pessoa, assim fica menos propicio a erros.

Espero que tenha conseguido ser claro.
Espero também ter ajudado em algo.
Caso contrário, favor desconciderar o post.

Abraço e boa sorte.


#5