2010-11-13 88 views
0

我正在嘗試爲執行RMD計算的Android創建應用程序。然而,該計劃一直給予0.0。必需的最小分佈計算不起作用

我認爲我的問題就出在這個代碼:

package com.MinDis.android; 

import java.util.*; 
import java.text.*; 

public class RMD 
{ 
double balance; 
double rmd; 
long age; 
String bdate; 
SimpleDateFormat sd = new SimpleDateFormat("MM/dd/yyyy"); 

Date current = new Date(); 
public void setBalance(double i) 
{ 
    balance = i; 
} 

public double getBalance() 
{ 
    return balance; 
} 

public void setBDate(String h) 
{ 
    bdate = h; 
} 

public long getAge() throws Exception 
{ 

    Date birthd = sd.parse(bdate); 
    long cur; 
    long birth; 
    long diff; 

    cur = current.getTime(); 
    birth = birthd.getTime(); 
    diff = cur - birth; 
    age = (diff/(24*60*60*1000))/365; 
    return age; 
} 

public double getRMD() 
{ 

    if (age == 70) 
    { 
    rmd = balance/27.4; 
    } 

    if (age == 71) 
    { 
    rmd = balance/26.5; 
    } 

    if (age == 72) 
    { 
    rmd = balance/25.6; 
    } 

    if (age == 73) 
    { 
    rmd = balance/24.7; 
    } 

    if (age == 74) 
    { 
    rmd = balance/23.8; 
    } 

    return rmd; 
} 
} 

我試着用.equals(),但抱怨我試圖取消引用長值。另外,我知道java.util.Date已被棄用,但我不想嘗試其他類。從我的第一個Android應用程序中,我發現「==」不起作用,但我不確定在這裏做什麼。

我已經驗證了餘額和生日值的輸入已被接受,所以這就是我如何限制它到這個特定的類。

回答

0

我解決了這個問題。我將條件改爲switch語句,然後使用

switch((int)getAge()) 
0

問題是,除非有事件調用getAge,否則age字段永遠不會被分配。只有調用getAge後纔會獲取一個值。因此,如果getRMD在getAge之前被調用,那麼if條件都不會成立,所以rmd不會被設置,因此原始值0將保留。我會避免讓班級和年齡成爲班級的領域。相反,它們應該是正在計算或使用它們的函數的局部變量。