现在,我有一个编程任务来计算bmi(身体质量指数),并将其分配给一个分类。根据bmi,它按如下方式分配它。我在获取字符串的分类时遇到了问题。当我尝试将分类放在消息框中时,它会告诉我没有初始化它。
public static void main(String[] args) {
//Variables
double bmi; // Body Mass Index
String weight; // Weight in kilograms
String height; // height in meters
String classification;
weight = JOptionPane.showInputDialog("Welcome to the BMI and BSA Calculator to begin enter weight in kilograms.");
double weight2 = Double.parseDouble(weight);
height = JOptionPane.showInputDialog("Enter height in meters");
double height2 = Double.parseDouble(height);
bmi = weight2/(height2*height2);
JOptionPane.showMessageDialog(null, "Your BMI is: " + bmi);
if (bmi < 18.5)
{
classification = "Underweight";
}
else if (bmi < 25)
{
classification = "Normal";
}
else if (bmi < 30)
{
classification = "Overweight";
}
else
{
classification = "Obese";
}
JOptionPane.showInternalMessageDialog(null, "Your classification is: " + classification);发布于 2011-02-24 07:36:31
这并不能真正回答你的问题,但是你在if语句中遗漏了一些值。例如,如果bmi为24.95,则不会进入正常或超重数据块。
一般来说,我尝试选择一种类型的比较,并使用它。
if (bmi < 18.5)
{
classification = "Underweight";
}
else if (bmi < 25)
{
classification = "Normal";
}
else if (bmi < 30)
{
classification = "Overweight";
}
else
{
classification = "Obese";
}至于你得到的错误,假设分类声明在if语句的上面,它真的不应该给你这个错误。
发布于 2011-02-24 08:48:54
如果将最后一行更改为
String result = "Your result is: " + classification;
JOptionPane.showInternalMessageDialog(null, result);为什么要使用showInternalMessageDialog而不是之前使用的showMessageDialog。
发布于 2011-02-24 07:34:57
假设您已经在某个地方声明了变量,那么它应该可以很好地工作。(这是在没有崩溃的情况下编译和运行;正如注释中所指出的,实际的BMI比较有问题,并且字符串文字周围的括号是多余的。)
例如:
public class Test
{
public static void main(String[] args)
{
double bmi = Double.parseDouble(args[0]);
String classification;
if (bmi < 18.5)
{
classification = ("Underweight");
}
else if (bmi >= 18.5 && bmi < 24.9)
{
classification = ("Normal");
}
else if (bmi >= 25 && bmi < 29.9)
{
classification = ("Overweight");
}
else
{
classification = ("Obese");
}
System.out.println("Classification: " + classification);
}
}请展示一个类似的简短但完整的程序来演示这个问题。
https://stackoverflow.com/questions/5098634
复制相似问题