Já estou há um tempo tentando resolver esse problema, mas sempre está dando erro e não sei mais o que tentar. Gostaria de pedir a ajuda de vocês para que olhassem o código que fiz e, se possível, apontassem o erro.
Primeiro devo definir uma classe com os atributos privados: nome, idade, sexo, peso e altura. E além dos métodos públicos de acesso aos atributos, criar dois novos métodos: calculoDoIMC (para calcular o índice de massa corporal da pessoa) e avaliacaoDoIMC (para retornar a condição de acordo com a tabela acima.) Abaixo segue o código que criei:
public class Pessoa {
private String nome, sexo, avaliacaoDoIMC;
private int idade;
private float peso, altura;
public Pessoa(){
nome="";
sexo="";
idade=0;
peso=0;
altura=0;
avaliacaoDoIMC="";
}
public Pessoa(String bnome, String bsexo, int bidade, float bpeso, float baltura, String bavaliacao){
nome=bnome;
sexo=bsexo;
idade=bidade;
peso=bpeso;
altura=baltura;
avaliacaoDoIMC=bavaliacao;
}
public void setNome(String bnome){
nome=bnome;
}
public void setSexo(String bsexo){
sexo=bsexo;
}
public void setIdade(int bidade){
idade=bidade;
}
public void setPeso(float bpeso){
peso=bpeso;
}
public void setAltura(float baltura){
altura=baltura;
}
public void setAvaliacaoDoIMC(String bavaliacao){
avaliacaoDoIMC=bavaliacao;
}
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 double getCalculoDoIMC(){
return peso/(altura*altura);
}
}[/code]
Aparentemente não tem erro, pelo menos quando compilo ele não acusa nenhum. Meu problema está na segunda parte: criar 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. Segue abaixo o código que criei:
[code]import javax.swing.*;
public class AtributosPessoa{
public static void main(String args[]){
AtributosPessoa c[]=new AtributosPessoa[3];
for(int i=0;i<3;i++){
c[i]=new AtributosPessoa();
c[i].setNome(JOptionPane.showInputDialog("Digite o nome."));
c[i].setIdade(Integer.parseInt(JOptionPane.showInputDialog("Digite a sua idade.")));
c[i].setSexo(JOptionPane.showInputDialog("Digite o seu sexo: M para masculino e F para feminino."));
c[i].setPeso(Float.parseFloat(JOptionPane.showInputDialog("Digite o seu peso.")));
c[i].setAltura(Float.parseFloat(JOptionPane.showInputDialog("Digite a sua altura.")));
if(c[i].getSexo().equals("F"))
if(getCalculoDoIMC<19.1)
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está abaixo do peso ideal");
else
if((getCalculoDoIMC>19.1)&&(getCalculoDoIMC<25.8))
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está no peso ideal");
else
if((getCalculoDoIMC>25.8)&&(getCalculoDoIMC<27.3))
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está marginalmente acima do peso ideal");
else
if((getCalculoDoIMC>27.3)&&(getCalculoDoIMC<32.3))
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está acima do peso ideal");
else
if(getCalculoDoIMC>32.3)
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está obeso");
if(c[i].getSexo().equals("M"))
if(getCalculoDoIMC<20.7)
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está abaixo do peso ideal");
else
if((getCalculoDoIMC>20.7)&&(getCalculoDoIMC<26.4))
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está no peso ideal");
else
if((getCalculoDoIMC>26.4)&&(getCalculoDoIMC<27.8))
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está marginalmente acima do peso ideal");
else
if((getCalculoDoIMC>27.8)&&(getCalculoDoIMC<31.1))
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está acima do peso ideal");
else
if(getCalculoDoIMC>31.1)
JOptionPane.showMessageDialog(null,"Olá, " +c[i].getNome+ ", seu IMC é " +c[i].getCalculoDoIMC+ " e você está obeso");
}
}
}
O que está faltando? O que está errado?