Java 从浮动中检索到的值是0.0?
此函数返回0.0,尽管所有值都是浮点值,并且从共享首选项中正确检索!可能是什么错误Java 从浮动中检索到的值是0.0?,java,floating-point,Java,Floating Point,此函数返回0.0,尽管所有值都是浮点值,并且从共享首选项中正确检索!可能是什么错误 float BMR(){ SharedPreferences customSharedPreference = getSharedPreferences( "myCustomSharedPrefs", Activity.MODE_PRIVATE); String Weight =customSharedPreference.getString("weightp
float BMR(){
SharedPreferences customSharedPreference = getSharedPreferences(
"myCustomSharedPrefs", Activity.MODE_PRIVATE);
String Weight =customSharedPreference.getString("weightpref", null);
float weight = Float.valueOf(Weight);
String Height = customSharedPreference.getString("heightpref",null);
float height = Float.valueOf(Height);
String Age = customSharedPreference.getString("agepref", null);
float age = Float.valueOf(Age);
int gender = customSharedPreference.getInt("genderpref", 0);
Toast.makeText(StatsActivity.this, Age, Toast.LENGTH_LONG).show();
if ( gender == 0){
bmr = (float) (10.0 *weight + 6.25 * height - 5.0 * age + 5.0);
}
if(gender == 1){
bmr = (float) (10.0 * weight + 6.25 * height - 5.0 * age- 161.0);
}
String bmrtest = String.valueOf(bmr);
Toast.makeText(StatsActivity.this, "bmr is "+bmrtest, Toast.LENGTH_LONG).show();
return bmr;
}
如果性别不是0或1会发生什么?您的bmr将保持未分配到0.0 如果这是个问题,你可以考虑将来: 在if后面加一个else子句 将这两个如果分组为一个elseif,因为它们是独占的 至少输入一个断言来检查性别是否为1或0
您是否尝试过使用调试器单步执行代码?此函数实际上并没有在任何地方声明名为bmr的变量。您需要调试代码,并在bmr的计算行中提供性别、体重、身高和年龄的值。我正在使用toast查看共享prefs的内容,并获得存储在sharedprefs中的正确值。此外,从我所能看到的代码来看,将性别作为一个枚举,其中包含男性和女性字段,这可能会更好。我将使用double而不是float,这将简化代码,减少表示错误。我还将使用parseDouble而不是valueOf,因为后者创建了一个您不需要的对象。我使用toast来查看共享Pref的内容,并获得存储在SharedPref中的正确值,包括性别!所以,我认为你已经一步一步地调试好了,你确实进入了两个if子句中的一个,对吗?您确定表达式中的所有值都不是零吗?没有更多的地方会出错……如果我使用toast,并且它提供了我想要的值,我真的需要调试器吗?