首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java使用方法并调用它们

Java使用方法并调用它们
EN

Stack Overflow用户
提问于 2014-09-06 08:40:04
回答 1查看 114关注 0票数 0
代码语言:javascript
复制
package savingsaccount;

public class SavingsAccount
{
    static double AnnualInterestRate;
    static double savingsBalance;

    public static double setInterestRate(double annualInterestRate) {
        annualInterestRate=.04;
        return annualInterestRate;
    }

    public static double calcnewbalance(double newsaverbal) {
        AnnualInterestRate = setInterestRate(AnnualInterestRate);
        newsaverbal = (newsaverbal * AnnualInterestRate/12) + newsaverbal;
        return newsaverbal;
    }

    public static void main(String[] args) {
        System.out.println("Savings    Account    Balances");
        System.out.println("Month    Saver1    Saver2");
        double saver1=2000;
        double saver2=3000;
        for(int n=1; n<=13; n=n+1) {
            if(n<10) {
                savingsBalance = calcnewbalance(saver1);
                saver1 = savingsBalance;
                System.out.printf( " "+ n + "        %.2f   " , saver1);
                savingsBalance = calcnewbalance(saver2);
                saver2 = savingsBalance;
                System.out.printf("%.2f%n" , savingsBalance);

            } else if(n<13 && n>9) {
                savingsBalance = calcnewbalance(saver1);
                saver1 = savingsBalance;
                System.out.printf(n + "        %.2f   " , saver1);
                savingsBalance = calcnewbalance(saver2);
                saver2 = savingsBalance;
                System.out.printf("%.2f%n" , saver2);
            } else {
                savingsBalance = calcnewbalance(saver1);
                saver1 = savingsBalance;

                System.out.printf(n + "        %.2f   " , saver1);
                savingsBalance = calcnewbalance(saver2);

                saver2 = savingsBalance;
                System.out.printf("%.2f%n" , saver2);
            }
        }
    }
}

因此,我尝试将代码的"else“部分的利率设置为一个不同的值。我只想在计算新平衡的等式中使用setInterestRate。

有没有办法让setInterestRate知道它何时被调用第13次,并实例化一个新的利率值?

EN

回答 1

Stack Overflow用户

发布于 2014-09-06 08:57:53

原语不是Object,也不是实例化的。此外,将这些设置为静态是完全没有意义的-

代码语言:javascript
复制
static double savingsBalance;
static double AnnualInterestRate;
public static double setInterestRate(double annualInterestRate) {
    annualInterestRate=.04;
    return annualInterestRate;
}

应该是一个访问器和一个赋值函数(或者是一个getter和setter),

代码语言:javascript
复制
private double annualInterestRate;
public void setInterestRate(double annualInterestRate) {
  this.annualInterestRate = annualInterestRate;
}
public double getInterestRate() {
  return this.annualInterestRate;
}
private double balance;
public double getBalance() {
  return balance;
}

然后

代码语言:javascript
复制
public double calcnewbalance(double balance) {
    AnnualInterestRate = setInterestRate(AnnualInterestRate); // 0.4 is always 0.4
    newsaverbal += (newsaverbal * getInterestRate()/12);
    return newsaverbal;
}

可以是

代码语言:javascript
复制
public void applyInterest() {
    balance += (balance * getInterestRate()/12);
}

接下来,一个无参数的SavingsAccount构造函数-

代码语言:javascript
复制
public SavingsAccount(double balance) {
  this.annualInterestRate = 0.04;
  this.balance = balance;
}

最后在main()中,

代码语言:javascript
复制
SavingsAccount sa = new SavingsAccount();
for (int = 0; i < 13; i++) {
  System.out.println(sa.getBalance());
  sa.applyInterest();
}

编辑

想在第13次通话时改变利率,你可以这样做-

代码语言:javascript
复制
private int interestCount = 0;
public void applyInterest() {
    if (interestCount++ > 12) {
      interestCount = 0;
      setInterestRate(0.05);
    }
    balance += (balance * getInterestRate()/12);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25695743

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档