Required Minimum Distribution Calculation not working
I am trying to make an app for the Android that does RMD calculations. The program, however, keeps giving 0.0.
I think that my problem lies in this code:
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 do开发者_如何转开发uble 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;
}
}
I tried using .equals(), but it complained that I was trying to dereference the long value. Also, I am aware that java.util.Date is deprecated, but I don't want to try the other classes. From my first Android app, I figured out the "==" does not work, but I am not sure what to do here.
I have verified that the input for a balance and the birthdate values were accepted, so that is how I limited it to this particular class.
I solved the problem. I changed the conditionals to a switch statement, then used
switch((int)getAge())
The problem is that unless something calls getAge, the age field was never getting assigned. Only once getAge is called does it acquire a value. So if getRMD is called before getAge, then none of the if conditions would be true, so rmd would not be set, and thus the original value of 0 would remain. I'd avoid having rmd and age be fields of the class. Instead, they should be local variables of the functions that are calculating them or using them.
加载中,请稍侯......
精彩评论