Fórum Calculo IMC #564963

09/04/2009

0

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.[/b][/code]
Eduardo Galloo

Eduardo Galloo

Responder

Posts

09/04/2009

Eduardo Galloo

[quote="eduardo.gallo"]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.[/b][/code]
1 - coloque if - else ao invés de ifs separados. Melhora inclusive o desempenho. 3 - Bom pelo meu entendimento, você teria que criar uma pessoa na classe PessoaCalculoIMC e preencher os dados dessa pessoa. Você poderia colocar os JOptionPane no construtor dessa classe. Dessa forma quando vc colocasse Pessoa p = new Pessoa() na classe PessoaCalculoIMC ele já pediria ao usuário pra digitar os atributos daquela pessoa. E a sua classe IMC poderia ter uma função que retornasse void e tivesse como parâmetro uma pessoa. Eu colocaria um atributo float imc na classe pessoa. Assim quando vc chamasse a função calculoIMC(pessoa p) você já guardaria o imc no objeto p. []s Gunnar
Responder

Gostei + 0

09/04/2009

Eduardo Galloo

Obrigado pela colaboração. Coloquei os if / else conforme sugerido e esta funcionando perfeitamente. A minha dúvida agora é de como implementar a classe pessoa, ou seja, pegar nesta classe que solicita os valores da altura e peso os outros atributos de uma unica vez e imprimir de uma vez só. Exemplo: Nome: Eduardo Idade: 26 Altura: 1.80 Peso: 80 Sexo: Masculino IMC: 24.69136 Acima do Peso Grato.
Responder

Gostei + 0

09/04/2009

Eduardo Galloo

[quote="eduardo.gallo"]Obrigado pela colaboração. Coloquei os if / else conforme sugerido e esta funcionando perfeitamente. A minha dúvida agora é de como implementar a classe pessoa, ou seja, pegar nesta classe que solicita os valores da altura e peso os outros atributos de uma unica vez e imprimir de uma vez só. Exemplo: Nome: Eduardo Idade: 26 Altura: 1.80 Peso: 80 Sexo: Masculino IMC: 24.69136 Acima do Peso Grato.
Pois é. Na classe Pessoa vai ser assim (na minha concepção)

class Pessoa{
  private float imc;
  private String nome;
  private float altura;
  private int idade;
  private String sexo;

  public Pessoa(){
      
      nome = JOptionPane.showInputDialog("Digite o nome da pessoa:");
      //e assim por diante para cada atributo da pessoa. 

  } 

  //faça get e setter para os atributos

}

Na sua classe CalculoPessoaImc quando vc criar um objeto Pessoa ele já vai pedir para o usuário preencher o objeto criado. Depois vc chama o seu método que retorna o imc para o setImc da classe pessoa OU passa o objeto pessoa direto pra um método que calcule o imc daquela pessoa. Nesse ultimo caso o tipo de retorno do método pode ser void. []s Gunnar
Responder

Gostei + 0

09/04/2009

Eduardo Galloo

Obrigado pela dica. Vou implementar e ver o resultado. Só uma curiosidade no momento. Ainda não aprendi sobre o "private". O que significa este private?
Responder

Gostei + 0

09/04/2009

Eduardo Galloo

significa que a variável ou método só pode ser acessar de dentro da própria classe
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar