2014-09-06 79 views
0
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); 
      } 
     } 
    } 
} 

所以我试图设置利率是代码的“其他”部分到不同的值。我只想在方程中使用setInterestRate计算新的余额。Java使用方法并调用它们

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

+0

使用一个'int'类型的变量,并且增加e,如果变量等于13,你启动函数? – HinoHara 2014-09-06 00:49:42

+0

由于'else'中的代码只会在'n == 13'时执行,所以您可以简单地实现您想要的任何逻辑,并在第13次执行。 – alfasin 2014-09-06 00:50:19

+0

以及问题是calcnewbalance不知道它在一个else语句中。我需要自己的兴趣 – user1914650 2014-09-06 01:03:57

回答

0

原语不是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); 
} 

接下来, ARG 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); 
} 
+0

因此,如何在第12次循环之后从.4更改为.5? – user1914650 2014-09-06 01:08:35

相关问题