-1

問題は次のとおりです。

(Savings Account クラス) クラス SavingsAccount を作成します。すべての口座所有者の年利率を格納するには、静的変数anualInterestRateを使用します。クラスの各オブジェクトには、セーバーが現在預金している金額を示すプライベート インスタンス変数 SavingBalance が含まれています。毎月の利子を計算するメソッド calculateMonthlyInterest を提供します。これは、SavingBalance に annualInterestRate を 12 で割った値を掛けて計算されます。この利子は、貯蓄残高に追加する必要があります。AnnualInterestRate を新しい値に設定する static メソッド modifyInterestRate を提供します。クラス SavingsAccount をテストするプログラムを作成します。それぞれ $2000.00 と $3000.00 の残高を持つ 2 つの SavingAccount オブジェクト saver1 と saver2 をインスタンス化します。年間利率を 4% に設定し、次に、12 か月ごとの月利を計算し、両方の貯蓄者の新しい残高を出力します。次に、annualInterestRate を 5% に設定し、翌月の利息を計算して、両方の貯蓄者の新しい残高を出力します。

私はそれをすべて解決しましたが、残高は増えていません。同じままです。年利が変化するたびに増加するはずです(少なくとも、それは私が理解していることです)。

class SavingsAccount
{
    static double annualInterestRate;
    private double savingsBalance;

    public SavingsAccount(double balance)
    {
        savingsBalance = balance;
    }

    public double calculateMonthlyInterest()
    {
        return (savingsBalance*annualInterestRate)/12;
    }

    public static void modifyInterestRate(double rate)
    {
        annualInterestRate = rate;
    }


    public static double getannualInterestRate(){return annualInterestRate;}

    public double getsavingsBalance(){return savingsBalance;}

}

public class SavingsTest
{
    public static void main(String args[])
    {
        SavingsAccount saver1 = new SavingsAccount(2000.0);
        SavingsAccount saver2 = new SavingsAccount(3000.0);

        SavingsAccount.modifyInterestRate(4);

        System.out.printf("Balance for Saver1 = %.2f\nBalance for Saver2 = %.2f\nInterest Rate = %.2f\n\n",saver1.getsavingsBalance()+saver1.calculateMonthlyInterest(),saver2.getsavingsBalance(),SavingsAccount.getannualInterestRate());

        SavingsAccount.modifyInterestRate(5);

        System.out.printf("New Balance for Saver1 = %.2f\nNew Balance for Saver2 = %.2f\nInterest Rate = %.2f\n\n",saver1.getsavingsBalance(),saver2.getsavingsBalance(),SavingsAccount.getannualInterestRate());
    }
}
4

4 に答える 4

0

私の答えを共有したかっただけです。

public class SavingsAccount {

private static float annualInterestRate = 0f;
private float savingsBalance;

public SavingsAccount(float balance) {
    savingsBalance = balance;
}

public static void setAnnualInterestRate(float t) {
    if (t >= 0 && t <= 1)
        annualInterestRate = t;
    else
        throw new IllegalArgumentException("Annual interest rate should be between 0 and 1");
}

private float calculateMonthlyInterest() {
    return savingsBalance * annualInterestRate / 12;
}

public float getSavingsBalance() {
    return savingsBalance + calculateMonthlyInterest();
}

public float getAnnualInterestRate(){
    return annualInterestRate;
}

public String toString() {
    return String.format("Balance: %.2f", getSavingsBalance());
}

}

主に

    SavingsAccount s1 = new SavingsAccount(2000);
    SavingsAccount s2 = new SavingsAccount(3000);
    SavingsAccount.setAnnualInterestRate(0.04f);

    System.out.println("S1: " + s1);
    System.out.println("S2: " + s2);

    SavingsAccount.setAnnualInterestRate(0.05f);
    System.out.println("S1: " + s1);
    System.out.println("S2: " + s2);
于 2015-07-08T04:21:09.250 に答える
0
public double addMonthlyInterest()     {    
  savingsBalance += (savingsBalance*annualInterestRate)/12;
  return savingBalance;     
}  

これにより、新しい残高と「増分」が返されます

于 2012-04-10T20:09:44.827 に答える
0

最初の print ステートメントでは、最初の引数について、毎月の利息を計算してそれらを合計した後に残高を計算していますが、新しい値をクラス メンバーの SavingBalance の値として設定していません。

2 番目の print ステートメントでは、setter を介して計算された値をクラス メンバーに戻していないため、クラスがインスタンス化された元の値を単純に出力しています。

ちなみに、print ステートメントでインライン計算を行わないでください。それらは紛らわしく、誰にとっても読みにくいものです。良い方法は、メソッドでローカル メンバーを初期化し、それらを計算に使用してローカル メンバーを出力することです。

于 2012-04-10T20:11:01.403 に答える