-1

この関数は 0.0 を返しますが、値はすべて float であり、共有設定から正しく取得されます。エラーは何ですか?

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;
    }
4

1 に答える 1

2

性別が0または1でない場合はどうなりますか?あなたのbmrは割り当てられていないままになります(0.0まで)。

それが問題である場合は、将来的に、次のことを検討することができます。

  • ifの後にelse句を置きます
  • これらの2つのifをelseifにグループ化します(排他的であるため)
  • 少なくとも、性別が実際に1または0であることを確認するためにアサーションを挿入します
于 2012-05-06T18:18:34.087 に答える