2013-08-27 135 views
3

我是Java新手,仍在努力学习解决方法。今天,我的老师给出了一个任务,我们在Java中制作BMI计算器。其中一个步骤是让它显示BMI类别。所以用户可以查看它并查看它们的位置。我完成了其他一切,但遇到了一个问题。Java中的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 

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

回答

8

试试这个:

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

您还可以打印这样的:

System.out.println("Your BMI is " + bmi); 
+0

感谢您的合作:) – ChrisD93

+0

不客气:) – 2013-08-27 21:50:59

+0

@ThatOneDude帮助 - 如果它解决您的问题,您应该点击勾选的答案。 – JoshDM

13

你忘了bmi占位符(和线路终端):

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

这里的formatting syntax guide供您参考。

+1

(btw,'bmi'似乎是一个'double',而不是'int'。) –

+0

@ DennisMeng你说得对,改成'%f'。 – rgettman

5

当您使用printf,以下也可以工作:

System.out.println("Your BMI is " + bmi); 
1

在理想情况下应打印浮筒/加倍通常BMI值被测量最多2小数位

System.out.format("Your BMI is %.2f%n",bmi); 
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); 
0

m在变量类型声明(double)和用户输入类型的声明(nextInt)之间使用ismatch 如果要将变量类型维护为double,我将使用nextDouble作为输入类型。

-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);

我希望它为你工作 好运继续下去

0

你可以使用这样的数组:

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 "); 
    } 

    } 
} 
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"; 
     } 
    } 
} 
+0

感谢您的回答。考虑通过解释此代码如何解决问题来扩展您的答案。 –

+0

Bmi bmi = new Bmi(); \t bmi.calculateBmi(65,162); \t System.out.println(bmi.getBmi()); \t System.out.println(bmi.getStatus()); –

+0

非常好,考虑编辑你的文章并添加解释。 –