必需的最小分配计算不起作用

时间:2010-11-13 02:49:52

标签: android

我正在尝试为执行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应用程序,我发现“==”不起作用,但我不知道该怎么做。

我已经确认平衡输入和生日值被接受了,所以我就把它限制在这个特定的类中。

2 个答案:

答案 0 :(得分:0)

我解决了这个问题。我将条件更改为switch语句,然后使用

switch((int)getAge())

答案 1 :(得分:0)

问题在于,除非调用getAge,否则永远不会分配年龄字段。只有一次调用getAge,它才会获得一个值。因此,如果在getAge之前调用getRMD,则所有if条件都不为真,因此不会设置rmd,因此原始值0将保留。我会避免让rmd和age成为班级的领域。相反,它们应该是计算它们或使用它们的函数的局部变量。