17

下面的函数从 sharedpreferences 中获取两个值,即体重和身高,我使用它们来计算 BMI,当我打印值的内容时,我得到了我在 sharedprefs 中输入的值(这很好)但是当我运行时对它们进行除法运算,结果我总是得到 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;

}
4

3 回答 3

51

你正在做整数除法。

您需要将一个操作数转换为double.

于 2012-05-04T20:27:30.307 回答
21

您正在进行整数除法,将值float转换为并将变量的数据类型更改bmifloat.

像这样:

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

您还应该将方法的返回类型更改public int computeBMI()float.

我建议你阅读这个stackoverflow 问题。

在这里,您可以看到 Java 中的原始数据类型列表及其完整描述。

希望能帮助到你!

于 2012-05-04T20:28:38.150 回答
2

因为bmi是整数。声明bmiWeight, Height作为浮点数。当您在除法中使用整数时,您将得到整数除法。当你使用双精度/浮点数时,你会得到浮点除法

于 2012-05-04T20:30:56.667 回答