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次,并实例化一个新的利率值?
发布于 2014-09-06 08:57:53
原语不是Object,也不是实例化的。此外,将这些设置为静态是完全没有意义的-
static double savingsBalance;
static double AnnualInterestRate;
public static double setInterestRate(double annualInterestRate) {
annualInterestRate=.04;
return annualInterestRate;
}应该是一个访问器和一个赋值函数(或者是一个getter和setter),
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;
}然后
public double calcnewbalance(double balance) {
AnnualInterestRate = setInterestRate(AnnualInterestRate); // 0.4 is always 0.4
newsaverbal += (newsaverbal * getInterestRate()/12);
return newsaverbal;
}可以是
public void applyInterest() {
balance += (balance * getInterestRate()/12);
}接下来,一个无参数的SavingsAccount构造函数-
public SavingsAccount(double balance) {
this.annualInterestRate = 0.04;
this.balance = balance;
}最后在main()中,
SavingsAccount sa = new SavingsAccount();
for (int = 0; i < 13; i++) {
System.out.println(sa.getBalance());
sa.applyInterest();
}编辑
想在第13次通话时改变利率,你可以这样做-
private int interestCount = 0;
public void applyInterest() {
if (interestCount++ > 12) {
interestCount = 0;
setInterestRate(0.05);
}
balance += (balance * getInterestRate()/12);
}https://stackoverflow.com/questions/25695743
复制相似问题