我在if else语句中分配字符串时遇到问题

现在我有一个编程分配来计算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); 

这不是你的问题的答案,但你在if语句中缺少一些值。 例如,如果bmi为24.95,则不会进入Normal或Overweight块。

一般来说,我尝试选择一种比较,然后使用它。

 if (bmi < 18.5) { classification = "Underweight"; } else if (bmi < 25) { classification = "Normal"; } else if (bmi < 30) { classification = "Overweight"; } else { classification = "Obese"; } 

至于你得到的错误,假设分类声明在if语句之上,它实际上不应该给你那个错误。

如果将最后一行更改为,会发生什么

 String result = "Your result is: " + classification; JOptionPane.showInternalMessageDialog(null, result); 

为什么你使用showInternalMessageDialog而不是之前使用的showMessageDialog。

它应该工作正常,假设你已经在某处声明了变量。 (这就是编译和运行而不会崩溃;正如评论中指出的那样,实际的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); } } 

请展示一个类似的简短但完整的程序来说明问题。

要分配变量String值,请执行以下操作:

 classification = new String("whatever");