3

我是 Java 新手,但仍在努力学习如何解决它。今天我的老师布置了一个作业,我们用 Java 制作了一个 BMI 计算器。步骤之一是使其显示 BMI 类别。因此,用户将能够查看它并了解他们所处的位置。我完成了其他所有工作,但遇到了问题。

这是脚本:

import java.util.Scanner;

public class BMI {
    public static void main(String[] args){

        Scanner input = new Scanner(System.in);

        double weight = 0.0;
        double height = 0.0;
        double bmi = 0.0;

        System.out.print("Enter your weight in pounds: ");
        weight = input.nextInt();

        System.out.print("Enter your height: ");
        height = input.nextInt();

        bmi = ((weight * 703)/(height * height));

        System.out.printf("Your BMI is", bmi);

        System.out.println("BMI VALUES");
        System.out.println("Underweight: Under 18.5");
        System.out.println("Normal: 18.5-24.9 ");
        System.out.println("Overweight: 25-29.9");
        System.out.println("Obese: 30 or over");
     }
    }

结果如下:

Your BMI isBMI VALUES
Underweight: Under 18.5
Normal: 18.5-24.9 
Overweight: 25-29.9
Obese: 30 or over

我做错了什么,我该如何解决这个问题?

4

9 回答 9

13

bmi您忘记了(和行终止符)的占位符:

System.out.printf("Your BMI is %f\n", bmi);

这是格式语法指南供您参考。

于 2013-08-27T21:44:19.217 回答
9

尝试这个:

System.out.printf("Your BMI is %f\n", bmi);

你也可以这样打印:

System.out.println("Your BMI is " + bmi);
于 2013-08-27T21:44:16.813 回答
5

在您使用printf时,以下操作也有效:

System.out.println("Your BMI is " + bmi);
于 2013-08-27T21:44:43.530 回答
1

理想情况下,您应该以可读格式打印浮点数/双精度数 通常 BMI 值测量到小数点后 2 位

System.out.format("Your BMI is %.2f%n",bmi);
于 2013-08-27T22:51:16.300 回答
1

你可以使用这样的数组:

 public static void main(String[] args) {
    double[] ht = new double[5];
    double[] wt = new double[5];
    double[] bmi = new double[5];
    String[] sht = new String[5];
    String[] swt = new String[5];

    for (int i = 0; i < ht.length; i++) {
        sht[i] = JOptionPane.showInputDialog("Enter Hight");
        swt[i] = JOptionPane.showInputDialog("Enter Weight");
        ht[i]=Double.parseDouble(sht[i]);
        wt[i]=Double.parseDouble(swt[i]);
        bmi[i]=wt[i]/(ht[i]*ht[i]);
        System.out.println("BMI IS "+bmi[i]+"Kg/m2");
        JOptionPane.showMessageDialog(null,"BMI IS  "+bmi[i] +"Kg/m2");
        if(bmi[i]>25){
            JOptionPane.showMessageDialog(null,"YOU ARE AT RISK");
            System.out.println("YOU ARE AT RISK");
        }else {
           JOptionPane.showMessageDialog(null,"YOU ARE Healthy"); 
           System.out.println("YOU ARE Healthy ");
    }

    }
}
于 2016-12-15T17:12:49.790 回答
0

变量类型声明 (double) 和您的用户输入类型声明 (nextInt) 不匹配 如果您想将变量类型保持为双精度类型,我会使用 nextDouble 作为输入类型。

于 2014-12-08T00:27:26.567 回答
0

它可能需要更多编码,但您可以使用 JOptionPane

input = JOptionPane.showInputDialog("What is you weight in pounds?");
        weight = Double.parseDouble(input);

        input = JOptionPane.showInputDialog("What is your hight is inches?");
        height = Double.parseDouble(input);
于 2014-11-13T03:38:40.580 回答
0

https://github.com/arghadasofficial/BMI/blob/master/src/argha/bmi/Bmi.java

public class Bmi {

    //Variables
    private double result; //Stores the result
    private String bmi; //Stores the Bmi result in String
    private String status; //Stores the status (Normal......)
    private static DecimalFormat decimalFormat = new DecimalFormat(".#"); //Formating the result

    /**
     * Get the BMI from calculation and returns the result in String format
     *
     * @return BMI
     */
    public String getBmi() {
        /**
         * Following code example : bmi = decimalFormat.format(result);
         *
         * if bmi is 23.12345 then remove 2345 and return 23.1 using DecimalFormat class provided by Java
         *
         */
        bmi = decimalFormat.format(result);
        return bmi;
    }

    /**
     * Get the status according to the BMI result and returns the Status in
     * String format
     *
     * @return Status
     */
    public String getStatus() {
        return status;
    }

    /**
     * Get weight and height in double format and do the calculation for you
     *
     * @param weight - accepts weight in kilograms
     * @param height - accept height in centimeters
     */
    public void calculateBmi(double weight, double height) {
        /**
         * First get weight and height then convert height to meters then
         * multiply the height itself to height and then divide the height with
         * weight then set the actual value to result variable
         */

        //Convert the height from cm to m
        double meters = height / 100;

        //Multiply height by height
        double multiply = meters * meters;

        //divide the height with weight in kg
        double division = weight / multiply;

        //set the value to result variable
        result = division;

        //call checkStatus method for checking Status
        checkStatus();
    }

    /**
     * Private method for checking bmi and returns the status It remains private
     * because we don't need to access this from somewhere else.
     */
    private void checkStatus() {
        /**
         * Check :
         *
         * if BMI is less than 18.5 then set status to Underweight if BMI is
         * greater than 18.5 and less than 25 then set status to Normal if BMI
         * is greater than 25 and less than 30 then set status to Overweight if
         * BMI equals to 30 or greater than 30 then set status to Obese
         */
        if (result < 18.5) {
            status = "Underweight";
        } else if (result > 18.5 && result < 25) {
            status = "Normal";
        } else if (result > 25 && result < 30) {
            status = "Overweight";
        } else if (result == 30 || result > 30) {
            status = "Obese";
        }
    }
}
于 2017-12-04T18:28:47.603 回答
-2

答:我不确定这bmi = ((weight * 703)/(height * height));是否正确。

我遇到了一个可能对你有用的公式 BMI = ((weight/(height * height))* 10000;

B: System.out.printf(“Your BMI is”, bmi);不需要 System.out.prinln( “ Your BMI is “ + BMI);

我希望它对你有用,祝你好运,继续努力

于 2016-06-09T15:47:17.293 回答