2017-05-30 18 views
0

私の結果があるので、私はBMI計算機を作成していますが、私はプログラムを実行すると、私は問題を抱えている:BMI電卓のJava

は0.0をnullweighsと背の高い0.0を測定します。あなたのBMIは

名前、体重、BMI、およびそれが体重不足、健康、過体重、または肥満であるかどうかを明記する必要があります。

public class Person { 

    private String firstName; 
    private double heightInches; 
    private double weightPounds; 


    public Person (String userFirstName, double userHeightInches, double userWeightPounds) 
    { 


     this.firstName = firstName; 
     this.heightInches = heightInches; 
     this.weightPounds = weightPounds; 


    } 



    public String getFirstName() 
    { 
     return this.firstName; 
    } 

    public double getHeightInches() 
    { 
     return this.heightInches; 
    } 

    public double getWeightPounds() 
    { 
     return this.weightPounds; 
    } 

    public void setFirstName (String firstName) 
    { 
     this.firstName = firstName; 
    } 

    public void setHeightInches(double userHeightInches) 
    { 
     this.heightInches = userHeightInches; 
    } 

    public void setWeightPounds(double userWeightPounds) 
    { 
     this.weightPounds = userWeightPounds; 
    } 





    @Override 
    public String toString() 
    { 
     return this.firstName + "weighs " + this.weightPounds + " and measures " 
       + this.heightInches + " tall. Your BMI is "; 
    } 



    public double calculateBMI(double userHeightInches, double userWeightPounds) 

    { 


    double BMI = ((userWeightPounds/userHeightInches) * (userHeightInches)) * 703; 
    return BMI; 


    } 

と....

public class BodyMassIndex { 
    public static Person anyPerson; 
    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 

    { 

      createPersonObject(); 
      displayBMI(); 

    } 

    public static void createPersonObject() 
    { 

     Scanner keyboard = new Scanner(System.in); 


     System.out.println("What is your first name?"); 
     String firstName = keyboard.next(); 


     System.out.println ("How tall are you (in inches)?"); 
     Double heightInches = keyboard.nextDouble(); 



     System.out.println("How much do you weigh (in pounds)?"); 
     Double weightPounds = keyboard.nextDouble(); 

     anyPerson = new Person(firstName, heightInches, weightPounds); 
    } 

    public static void displayBMI() 
    { 


     double userWeightPounds = 0; 
     double userHeightInches = 0; 


     double BMI = anyPerson.calculateBMI(userWeightPounds, userHeightInches); 

     System.out.println(anyPerson.toString()); 

     if (BMI < 18.5) 
     { 
      System.out.println("Underweight"); 
     } 

     else if (BMI >= 18.5 && BMI < 24.9) { 
      System.out.println("Healthy"); 
     } 

     else if (BMI >= 25 && BMI < 29.9) { 
      System.out.println("Overweight"); 
     } 

     else if (BMI >= 30) { 
      System.out.println("Obese"); 
     } 

    } 
+0

プログラムをデバッグする必要があります。 –

答えて

4

あなたが自分自身に自分のフィールド変数を設定している、インスタンス化され、その値nullまたは0.0を持っていません。ここで

コードです。クラスのパラメータに設定する必要があります:this.firstName = ユーザー FirstName。

あなたのBMI計算は自動的に0.0と0.0の値を使用しているため、オフになっています。計算を行うには、Personクラスのgetterメソッドを使用する必要があります。

1

あなたは?:

public static void displayBMI() { 

    /* This code is no longer needed */ 
    double userWeightPounds = 0; 
    double userHeightInches = 0; 

    double BMI = anyPerson.calculateBMI(anyPerson.getWeightPounds(), anyPerson.getHeightInches()); 
    ... 

あなたはまたPersonをパラメータとして体重と身長を要求することなく、BMIを計算するために少しさらにコードを単純化することができ、以下のようBMIを計算する必要があります。

public double calculateBMI() { 
    return ((this.weightPounds/this.heightInches) * (this.heightInches)) * 703; 

} 

入力がゼロであることを確認するとよいでしょう。

0

こんにちは、私は推測するいくつかの基本的なOOPの練習が必要です。あなたが投稿したコードを修正しました。

  • 固定constructor injection(あなたは無関係である自分自身に変数を設定しました。)
  • のToString()メソッドはthisを使用して、フィールドにアクセスする必要はありません。(これを削除)
  • 計算BMIがと関連しています人とそのフィールドそのもの。だから、それがパラメータ化されるために必要とされていません(削除calculateBMIパラメータ)
  • Google Code Styleここ

にコード敬意を再フォーマットされ、以下のあなたのクラス:。

public class Person { 

private String firstName; 
private double heightInches; 
private double weightPounds; 

public Person(String userFirstName, double userHeightInches, double userWeightPounds) { 
    this.firstName = firstName; 
    this.heightInches = userHeightInches; 
    this.weightPounds = userWeightPounds; 
} 

public String getFirstName() { 
    return this.firstName; 
} 
public double getHeightInches() { 
    return this.heightInches; 
} 
public double getWeightPounds() { 
    return this.weightPounds; 
} 
public void setFirstName(String firstName) { 
    this.firstName = firstName; 
} 
public void setHeightInches(double userHeightInches) { 
    this.heightInches = userHeightInches; 
} 
public void setWeightPounds(double userWeightPounds) { 
    this.weightPounds = userWeightPounds; 
} 

@Override 
public String toString() { 
    return firstName + "weighs " + weightPounds + " and measures " 
    + heightInches + " tall. Your BMI is "; 
} 

public double calculateBMI() 
{ 
    double BMI = ((weightPounds/heightInches) * (heightInches)) * 703; 
    return BMI; 
} 
} 

BodyMassIndex

import java.util.Scanner; 

public class BodyMassIndex { 

    public static Person anyPerson; 

    public static void main(String[] args) 
    { 
     createPersonObject(); 
     displayBMI(); 
    } 

    public static void createPersonObject() { 
     Scanner keyboard = new Scanner(System.in); 

     System.out.println("What is your first name?"); 
     String firstName = keyboard.next(); 

     System.out.println("How tall are you (in inches)?"); 
     Double heightInches = keyboard.nextDouble(); 

     System.out.println("How much do you weigh (in pounds)?"); 
     Double weightPounds = keyboard.nextDouble(); 

     anyPerson = new Person(firstName, heightInches, weightPounds); 
    } 

    public static void displayBMI() { 
     double BMI = anyPerson.calculateBMI(); 

     System.out.println(anyPerson.toString()); 

     if (BMI < 18.5) { 
      System.out.println("Underweight"); 
     } else if (BMI >= 18.5 && BMI < 24.9) { 
      System.out.println("Healthy"); 
     } else if (BMI >= 25 && BMI < 29.9) { 
      System.out.println("Overweight"); 
     } else if (BMI >= 30) { 
      System.out.println("Obese"); 
     } 
    } 

Good Luck!