Java 向构造函数属性添加静态属性
问题如下: (储蓄账户类)创建储蓄账户类。使用静电计 可变年利率存储所有人的年利率 账户持有人。类的每个对象都包含一个私有实例 变量savingsBalance,指示当前储蓄的金额 存款。提供方法calculateMonthlyInterest来计算 将储蓄余额乘以 年利率除以12,该利息应加上 储蓄余额。提供一个静态方法modifyInterestRate,用于设置 将年度利率调整为新值。编写一个测试类的程序 储蓄账户。实例化两个savingsAccount对象saver1和savingsAccount 储蓄2,余额分别为2000.00美元和3000.00美元。设置 年利率定为4%,然后计算每个月的月利率 打印两个储户的新余额。接下来,设置 年利率为5%,计算下个月的利息和 打印两个储户的新余额 我解决了所有问题,但余额并没有增加,而是保持不变。它应该随着年利率的每一次变化而增加(至少,这是我所理解的)Java 向构造函数属性添加静态属性,java,static,Java,Static,问题如下: (储蓄账户类)创建储蓄账户类。使用静电计 可变年利率存储所有人的年利率 账户持有人。类的每个对象都包含一个私有实例 变量savingsBalance,指示当前储蓄的金额 存款。提供方法calculateMonthlyInterest来计算 将储蓄余额乘以 年利率除以12,该利息应加上 储蓄余额。提供一个静态方法modifyInterestRate,用于设置 将年度利率调整为新值。编写一个测试类的程序 储蓄账户。实例化两个savingsAccount对象saver1和savingsAc
您没有在此代码中修改
savingsBalance
的值
public double addMonthlyInterest() {
savingsBalance += (savingsBalance*annualInterestRate)/12;
return savingBalance;
}
这将在您的第一个打印对账单中返回新余额和“增量”,对于第一个参数,您是在计算月利息并将其相加后计算余额的,并且没有将新值设置为类成员储蓄余额的值 在第二个print语句中,由于您没有通过setter将计算值设置回类成员,因此它只是打印出类实例化时使用的原始值
另一方面,不要在print语句中进行内联计算。它们让人困惑,对任何人来说都不容易阅读。一个好方法是初始化方法中的本地成员,并使用它们进行计算和打印本地成员。只是想分享我的答案 公共类储蓄帐户{
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());
}
我不认为改变利率应该改变账户余额。如果这是你唯一的问题,我认为这是正确的。你的一个代码实际上修改了
savingBalance
变量(构造函数除外)。你必须在某个地方更改值,我不知道你想在哪里更改。顺便说一句,你的格式/命名约定不好。假设这是hw,你可能会失去样式的分数。请至少修复标题。我确信这不是讲师使用的术语!我这样做时不应该更改平衡吗?公共储蓄账户(双倍余额){savingsBalance=balance+calculateMonthlyInterest();}
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);