Java 无法识别addInterest()
我正在尝试创建银行帐户,但我的addInterest()函数不起作用。它似乎不认识我的功能。它并没有像应该的那样在余额上增加利息。我认为计算根本没有发生。我已尝试修改AddInTest(),但无效。我不明白怎么了。任何帮助都将不胜感激Java 无法识别addInterest(),java,bank,Java,Bank,我正在尝试创建银行帐户,但我的addInterest()函数不起作用。它似乎不认识我的功能。它并没有像应该的那样在余额上增加利息。我认为计算根本没有发生。我已尝试修改AddInTest(),但无效。我不明白怎么了。任何帮助都将不胜感激 package lab2; import java.util.*; import java.io.*; public class Account { protected String accName; protected Double bala
package lab2;
import java.util.*;
import java.io.*;
public class Account {
protected String accName;
protected Double balance;
public Account(String name, double initDeposit) {
accName = name;
balance = initDeposit;
}
public String getAccountName() {
return accName;
}
public double getBalance() {
return balance;
}
public void deposit(double amount) {
balance += amount;
}
public void withdraw(double amount) {
int fee = 6;
if (balance < 100) {
amount += fee;
balance -= amount;
}
else if (amount > balance) {
double limit = -50;
if (balance > limit)
balance = limit;
}
else
balance -= amount;
}
public String toString() {
return accName + ' ' + balance;
}
public static class CurrentAccount extends Account {
final static double DEFAULT_LIMIT = -50;
double limit = DEFAULT_LIMIT;
public CurrentAccount(String name, double i) {
super(name, i);
}
public void withdraw(double amount) {
double fee = 6;
if (balance < 100) {
amount += fee;
balance -= amount;
}
if (amount > balance) {
double res;
res = balance - amount;
if (res > -50)
res = limit;
}
balance -= amount;
}
public void deposit(double amount) {
balance += amount;
}
public String toString() {
return accName + ' ' + balance;
}
}
public static class DepositAccount extends Account {
final static double DEFAULT_INTEREST = 0.04;
double interestRate = DEFAULT_INTEREST;
public DepositAccount(String name, double i) {
super(name, i);
}
public void withdraw(double amount) {
balance -= amount;
}
public void deposit(double amount) {
balance += amount;
addInterest(balance);
}
public double addInterest(double bal) {
return (bal*interestRate)+bal;
}
public String toString() {
return accName + ' ' + balance;
}
}
public static class HigherRateAccount extends Account {
final static double DEFAULT_INTEREST = 0.07;
double interestRate = DEFAULT_INTEREST;
public HigherRateAccount(String name, double i) {
super(name, i);
}
public void withdraw(double amount) {
double fee;
fee = 10;
double feeFixed = amount + fee;
balance += feeFixed;
}
public double addInterest(double bal) {
return (bal*interestRate)+bal;
}
public void deposit(double amount) {
balance += amount;
addInterest(balance);
}
public String toString() {
return accName + ' ' + balance;
}
}
public static void main(String[] args) {
Account arthur = new CurrentAccount("Arthur", 200);
Account brenda = new DepositAccount("Brenda", 70);
Account charlie = new HigherRateAccount("Charlie", 1000);
System.out.println(arthur);
System.out.println(brenda);
System.out.println(charlie);
arthur.withdraw(50);
brenda.withdraw(50);
charlie.deposit(1000);
System.out.println(arthur);
System.out.println(brenda);
System.out.println(charlie);
arthur.withdraw(175);
brenda.deposit(90);
charlie.withdraw(3000);
System.out.println(arthur);
System.out.println(brenda);
System.out.println(charlie);
}
}
lab2包装;
导入java.util.*;
导入java.io.*;
公共类帐户{
受保护的字符串名称;
保护双重平衡;
公共帐户(字符串名称,双初始存款){
accName=名称;
余额=初始存款;
}
公共字符串getAccountName(){
返回帐户名;
}
公共双getBalance(){
收益余额;
}
公共作废保证金(双倍金额){
余额+=金额;
}
公开作废取款(双倍金额){
国际费用=6;
如果(余额<100){
金额+=费用;
余额-=金额;
}
否则如果(金额>余额){
双限=-50;
如果(余额>限额)
余额=限额;
}
其他的
余额-=金额;
}
公共字符串toString(){
返回accName+“”+余额;
}
公共静态类CurrentAccount扩展帐户{
最终静态双默认值_限制=-50;
双重限制=默认限制;
公共CurrentAccount(字符串名称,双i){
超级(姓名,i);
}
公开作废取款(双倍金额){
双倍费用=6;
如果(余额<100){
金额+=费用;
余额-=金额;
}
如果(金额>余额){
双res;
res=余额-金额;
如果(res>-50)
res=极限;
}
余额-=金额;
}
公共作废保证金(双倍金额){
余额+=金额;
}
公共字符串toString(){
返回accName+“”+余额;
}
}
公共静态类存款帐户扩展帐户{
最终静态双默认利息=0.04;
双重利息=默认利息;
公共存款账户(字符串名称,双i){
超级(姓名,i);
}
公开作废取款(双倍金额){
余额-=金额;
}
公共作废保证金(双倍金额){
余额+=金额;
额外利息(余额);
}
公共双附加测试(双bal){
收益(bal*利率)+bal;
}
公共字符串toString(){
返回accName+“”+余额;
}
}
公共静态类HigherRateAccount扩展帐户{
最终静态双违约利息=0.07;
双重利息=默认利息;
公共HigherRateAccount(字符串名称,双i){
超级(姓名,i);
}
公开作废取款(双倍金额){
双倍收费;
费用=10;
双费固定=金额+费用;
平衡+=固定;
}
公共双附加测试(双bal){
收益(bal*利率)+bal;
}
公共作废保证金(双倍金额){
余额+=金额;
额外利息(余额);
}
公共字符串toString(){
返回accName+“”+余额;
}
}
公共静态void main(字符串[]args){
账户亚瑟=新的活期账户(“亚瑟”,200);
账户布伦达=新存款账户(“布伦达”,70);
账户查理=新的高级账户(“查理”,1000);
系统输出打印(arthur);
系统输出打印(布伦达);
系统输出打印(查理);
撤回(50);
布伦达:撤回(50);
查理:存款(1000);
系统输出打印(arthur);
系统输出打印(布伦达);
系统输出打印(查理);
亚瑟.撤回(175);
布伦达存款(90);
查理,撤回(3000);
系统输出打印(arthur);
系统输出打印(布伦达);
系统输出打印(查理);
}
}
问题在于:
public void deposit(double amount) {
balance += amount;
addInterest(balance);
}
Add interest返回一个值,但从不使用该值。你应该这样做
balance = addInterest(balance);
相反(可能,我认为您已经在AddInest函数中添加了余额)。您正在从
AddInest
返回一个值,但在调用该值的方法中,您没有对返回的数字执行任何操作。你只要打电话
因此,
addInterest
返回新的余额,但该值没有分配到余额的任何位置。如果您说1,您的问题更容易理解。这是我的意见。2.下面是我对输出3的期望。下面是实际发生的情况