java - 体重指数计算器 Java

标签 java

我正在创建一个 BMI 计算器,但运行该程序时遇到问题,因为我的结果是:

空重为 0.0,测量高度为 0.0。您的体重指数是

何时应注明姓名、体重、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");
        }

    }

最佳答案

您正在将字段变量设置为其自身,这些变量未实例化,因此值为 null 或 0.0。您需要将它们设置为您的类的参数:this.firstName = userFirstName。

由于您自动使用 0.0 和 0.0 值,因此您的 BMI 计算也已关闭。您应该使用 Person 类中的 getter 方法来进行计算。

关于java - 体重指数计算器 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44253099/

相关文章:

java - 高效地散列一棵树

java - 如果我们关闭 JVM,sql 连接会自动关闭吗?

java - 如何使用appium在Android应用程序中获取内容描述

java - LWUIT ComboBox 弹出主题主题问题

java - 使用 Unity3D 需要原生 Android Activity 和 Java 中的触摸事件

java - 包含 PhpStorm 2017.2.2 和 JRE 时内存不足(x64 版本)

java - 无法使用 Apache POI 删除行,因为单元格包含电子邮件地址

java - 通过与 Java 中的正则表达式匹配来替换字符串

java - 调用WebService时SSL握手失败

java - '(number)' 的正则表达式