首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在if else语句中赋值字符串时遇到问题

在if else语句中赋值字符串时遇到问题
EN

Stack Overflow用户
提问于 2011-02-24 07:28:45
回答 4查看 1.9K关注 0票数 0

现在,我有一个编程任务来计算bmi(身体质量指数),并将其分配给一个分类。根据bmi,它按如下方式分配它。我在获取字符串的分类时遇到了问题。当我尝试将分类放在消息框中时,它会告诉我没有初始化它。

代码语言:javascript
运行
复制
            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);
EN

回答 4

Stack Overflow用户

发布于 2011-02-24 07:36:31

这并不能真正回答你的问题,但是你在if语句中遗漏了一些值。例如,如果bmi为24.95,则不会进入正常或超重数据块。

一般来说,我尝试选择一种类型的比较,并使用它。

代码语言:javascript
运行
复制
if (bmi < 18.5)
{
    classification = "Underweight";
}
else if (bmi < 25)
{
    classification = "Normal";
}
else if (bmi < 30)
{
    classification = "Overweight";
}
else
{
    classification = "Obese";
}

至于你得到的错误,假设分类声明在if语句的上面,它真的不应该给你这个错误。

票数 2
EN

Stack Overflow用户

发布于 2011-02-24 08:48:54

如果将最后一行更改为

代码语言:javascript
运行
复制
String result = "Your result is: " + classification;        
JOptionPane.showInternalMessageDialog(null, result);

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

票数 1
EN

Stack Overflow用户

发布于 2011-02-24 07:34:57

假设您已经在某个地方声明了变量,那么它应该可以很好地工作。(这是在没有崩溃的情况下编译和运行;正如注释中所指出的,实际的BMI比较有问题,并且字符串文字周围的括号是多余的。)

例如:

代码语言:javascript
运行
复制
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);
    }
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5098634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档