猿问

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

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

下面的函数从sharedpreferences中获取两个值,即weight和height,我用它们来计算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;}


神不在的星期二
浏览 1375回答 3
3回答

qq_笑_17

您正在执行整数除法。您需要将一个操作数强制转换为double。

白猪掌柜的

您正在执行整数除法,将值float转换为,并将变量的数据类型更改bmi为float。像这样:float bmi = (float)weight/(float)(height*height);您还应该将方法的返回类型更改public int computeBMI()为float。我建议您阅读此 stackoverflow问题。在这里,您可以获得Java 原始数据类型的列表及其完整说明。希望能帮助到你!

繁星coding

因为bmi是整数。声明bmi或Weight, Height作为浮点数。在除法中使用整数时,将获得整数除法。使用double / floats时,将得到浮点除法
随时随地看视频慕课网APP

相关分类

Java
Android
我要回答