java - 这个 if else 语句有问题吗?

标签 java android if-statement

当我打印消息内容时,它总是给我“underweight”,尽管 displaybmi 不是 <19

public String BMImessage(){
    SharedPreferences customSharedPreference = getSharedPreferences(
            "myCustomSharedPrefs", Activity.MODE_PRIVATE);

    String Height = customSharedPreference.getString("heightpref", "");
    String Weight = customSharedPreference.getString("weightpref", "");

    float weight = Float.valueOf(Weight);
    float height = Float.valueOf(Height);

    float displaybmi = weight/(height*height);
    if (displaybmi <19) 
        message = "Underweight" ;
    else if (displaybmi >=19 && displaybmi <=25) 
        message = "Desirable Weight";
    else if (displaybmi >=26 && displaybmi <=29) 
        message =  "Overweight" ;
    else if (displaybmi >=30 && displaybmi <=40) 
        message =  "Obese";
    else if (displaybmi >40) 
        message = "Extremely Obese" ;
    return message;
}

最佳答案

displaybmi 的值是什么?尝试将比较更改为使用 19.0 以确保不会发生截断。您正在将 float (displaybmi) 与 int (19) 进行比较,这可能会导致意外行为。

关于java - 这个 if else 语句有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10455984/

相关文章:

JAVA - 如果-那么需要帮助

java - 将 JPanel 用作 JTable 单元格编辑器时出现焦点问题

java - Windows 版 Android Studio 安装失败

android - 如何从一项 Activity 中获取值(value)到另一项 Activity

java - 如何使用 firebase 搜索查询结果项实现 OnClick 项

c - "if "和 "#if ";哪个更好用

java - 为什么代码会运行命令,即使其 if 语句未得到满足?

java - 如何同时在两个数组中找到相同的 byte[]-objects?

android - 如何在 android Studio 3.0.1 中为旧 API(例如 Gingerbread)构建 android 应用程序?

python - else block 从不执行