2012-05-06 9 views
-1

この関数は、すべての値が浮動小数点であり、共有プリファレンスから正しく取得されますが、0.0を返します。何がエラーになる可能性がありますか?浮動小数点から取得される値は0.0ですか?

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; 
    } 
+3

デバッガでコードをステップ実行しようとしましたか?この関数は実際にはどこにでも 'bmr'という名前の変数を宣言しません。 –

+3

コードをデバッグし、性別、体重、身長、年齢の値をbmrの計算行に入力する必要があります。 – dbf

+0

私は共有のprefsの内容を見るためにトーストを使用していますが、私は正しい値をsharedprefsに格納しています。 – callback

答えて

2

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

それが問題だ場合、あなたは、将来のために、検討することがあります。

  • グループはELSEIFにこれら二つのIFSだ場合

    • は、あなたの後に他の句を置く(彼らは排他的であるため)
    • 少なくとも、性別が確かに1または0であることを確認するためにアサートしてください。
  • +0

    私はトーストを使用して共有設定の内容を確認していますが、私はジェンダーを含むsharedprefsに正しい値を保存しています! – callback

    +0

    だから、私はステップバイステップでデバッグして、それに2つのif節に入るのですか?あなたはあなたの表現にあるすべての値に対してゼロ以外の値を取っていると確信していますか?これは間違っている可能性があるより多くの場所はありません... – Miquel

    +0

    私はトーストを使用して、私が望む値を与える場合、私は本当にデバッガが必要でしょうか? – callback

    関連する問題