Java IMC, helps with an error

Asked

Viewed 511 times

1

What’s wrong with that code, I can’t print the IMC calculation? Error is in the last lines of the Person Class.

package exe_3_ques_02;

//import import java.util.Set;

 import class exe_3_ques_03.Pessoa;

 public class Exe_3_Ques_02 {

    public static void main(String[] args) {
     System.out.println(" Exercícios – Construindo Classes ");
     System.out.println(" Questão 2 ");
     System.out.println("=========================\n");
    //=========================================

     Pessoa pessoa = new Pessoa("Diego", 23, 1.70f, 72f, "Masculino"); //, 23, 170, 72, M

        System.out.println(" Nome: " + pessoa.getNome());
        System.out.println(" Idade: "  + pessoa.getIdade());
        System.out.println(" Altura: " + pessoa.getAltura());
        System.out.println(" Peso: "   + pessoa.getPeso());
        System.out.println(" Sexo: "    + pessoa.getSexo());            

        System.out.println(" IMC" + pessoa.toString()); //            
        System.out.println("=================");

    }
}

CLASS PERSON

 package exe_3_ques_02;


  public class Pessoa {
   private String nome, sexo;
  private int idade;
  private float altura, peso;


public Pessoa() {
    this.nome  = " "; 
    this.idade  = 0;
    this.altura  = 0;
    this.peso   =  0;
    this.sexo = " ";

}

 public Pessoa(String nome, int idade, float altura, float peso, String sexo) {
    this.nome = nome;
    this.idade = idade;
    this.altura = altura;
    this.peso = peso;
    this.sexo = sexo;

}
   //=================
public String getNome() {
    return nome;
}

 public void setNome(String nome) {
    this.nome = nome;
}
   //=================
  public int getIdade() {
    return idade;
}

  public void setIdade(int idade) {
    this.idade = idade;
}
   //=================
  public float getAltura() {
    return altura;
}

public void setAltura(float altura) {
    this.altura = altura;
}
  //=================
  public float getPeso() {
    return peso;
}

  public void setPeso(float peso) {
    this.peso = peso;
}
  //=================

   public String getSexo() {
    return sexo;
}

  public void setSexo(String sexo) {
    this.sexo = sexo;
}
  //=================
  //    calculo
public String calculoIMC (){
    double calculo;
    calculo = peso / (altura * altura); 

    if (calculo <= 18.5) { 
return ("Seu IMC é "+calculo + "  abaixo do normal!"); 
} 
    else if ((calculo > 25.0) && (calculo <= 30.0)) { 
return ("Seu IMC é " +calculo + "  acima do normal!"); 
} 
    else if (calculo > 30) { 
return ("Seu IMC é " + calculo + "  obesidade!"); 
}  

}

  //================

@Override
public String toString(){ 
    return " de : "+this.nome + " esta: " + calculo; // ERRO!

   }


   }

inserir a descrição da imagem aqui

inserir a descrição da imagem aqui

inserir a descrição da imagem aqui

  • Which error appears?

  • 1

    I edited with a bug print

  • https://answall.com/q/212754/101

2 answers

3

The calculus variable is initialized within the BMI calculation method. Initialized variables within methods cannot be recognized outside them. So when you call the calculus variable in another method, in this case, toString, it generates the error.

You can solve this by initializing the calculus variable in the class and not within the method.

1


The variable calculo does not exist in the method toString. You need to create it and set the value according to the data

@Override
public String toString(){
    double calculo;
    calculo = this.peso / (this.altura * this.altura);

    return " de : " + this.nome + " esta: " + calculo;
}

But this code can generate an exception if the height is 0 and therefore the weight will be divided by 0 generating a Arithmeticexception

  • I understood and making these modifications the output was /ː BMI of : Diego esta: 24.913494110107422 */ as it would do besides leaving the BMI value, exit tbm if this obese or underweight ?

  • You can call the function calculoIMC: return " de : " + this.nome + " esta: " + calculo + "\n" + this.calculoIMC();

  • Return " from : " + this.name + " is: " + calculus + " n" + this.calculoIMC(); // like this ?

  • Yeah, it’s not consistent with what I said?

  • I edited with another print with the code snippet and the error

  • Remove the if (calculo > 30) leaving only the /* ... */ } else { /* ... */

  • Costamilam, it worked!

Show 2 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.