Java 中的除法总是导致零 (0)?

2022-09-02 22:47:25

下面的函数从共享首选项中获取两个值,体重和身高,我用它们来计算BMI,当我打印值的内容时,我得到我在shareprefs中输入的值(这很好),但是当我对它们运行除法运算时,我总是得到0作为结果。错误在哪里?

public int computeBMI(){
    SharedPreferences customSharedPreference = getSharedPreferences(
            "myCustomSharedPrefs", Activity.MODE_PRIVATE);

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

    int weight = Integer.parseInt(Weight);
    int height = Integer.parseInt(Height);
    Toast.makeText(CalculationsActivity.this, Height+" "+ Weight , Toast.LENGTH_LONG).show();

    int bmi = weight/(height*height);
    return bmi;

}

答案 1

您正在执行整数除法。

您需要向 强制执行一个操作数。double


答案 2

您正在执行整数除法,将值强制转换为 并将变量的数据类型更改为 。floatbmifloat

喜欢这个:

float bmi = (float)weight/(float)(height*height);

还应将方法的返回类型更改为 。public int computeBMI()float

我建议您阅读堆栈溢出问题。

在这里,您有一个Java中基元数据类型的列表及其完整描述。

希望它有帮助!


推荐