2012-05-06 3 views
-1

이 함수는 0.0을 반환하지만 모든 값은 부동이며 공유 환경 설정에서 올바르게 검색됩니다! 무엇이 오류가 될 수 있습니까?float에서 검색된 값은 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

나는 공유 환경 설정의 내용을보기 위해 토스트를 사용하고 있으며, sharedprefs에 저장된 올바른 값을 얻는다. – callback

답변

2

성별이 0 또는 1이 아닌 경우 어떻게됩니까? 귀하의 bmr은 할당되지 않은 상태로 유지됩니다 (0.0까지).

그게 문제가 있다면, 당신은 미래에 고려할 수 있습니다 후

  • 는 다른 절을 넣어 당신 (그들은 배타적 이후)을 ELSEIF에
  • 그룹이 두 IFS를인지
  • 적어도 성별이 실제로 1 또는 0인지 확인하려면 단언하겠습니다.
+0

나는 토스트를 사용하여 공유 환경 설정의 내용을보고 있으며, 성별을 포함하여 sharedprefs에 저장된 올바른 값을 얻습니다! – callback

+0

그래서, 나는 단계별로 디버깅을했고 두 개의 if 절 중 하나에 들어가야합니까? 그리고 표현식에 포함 된 모든 값에 대해 0이 아닌 값을 가지고 있는지 확인하십시오. 이게 잘못 될 수있는 더 많은 장소가 없습니다 ... – Miquel

+0

토스트를 사용하면 내가 원하는 값을 제공하는 디버거가 정말로 필요합니까? – callback