说明:设计一个名为Account的类,其中包含:
帐户的名为id的私有int数据字段(默认值为0)。
在Bluej中创建一个项目文件并实现该类。 (提示:方法getMonthlyInterest()是返回每月利息,而不是利率。每月利息是余额* monthlyInterestRate.urwaysInterestRate是annualInterestRate / 1200。
使用BlueJ测试程序。您应该测试每种方法,确保它们正常工作。
编写第二个名为AccountTester的类,其中包含main方法。帐户测试人员应按此顺序执行以下操作:
以下是我的以下代码。我有错误我不知道如何解决它们。任何帮助/提示将不胜感激
import java.util.Scanner;
import java.util.Date;
public class Account
{
private int id = 0;
private double balance = 0;
final private double annualinterestrate = 0.12;
Date dateCreated;
public Account()
{
}
public Account(int aId, double aBalance, double annualInterestRate)
{
id = aId;
balance = aBalance;
annualInterestRate = annualInterestRate;
dateCreated = new Date();
}
public void setID (int aId)
{
id = aId;
}
public int getID()
{
return id;
}
public void setBalance (double aBalance)
{
balance = aBalance;
}
public double getbalance()
{
return balance;
}
public void setAnnualInterestRate (double aannualInterestRate)
{
annualInterestRate = aannualInterestRate;
}
public double getAnnualInterestRate()
{
return annualInterestRate;
}
public Date getDateCreated()
{
return dateCreated;
}
public double getMonthlyInterestRate()
{
return annualInterestRate / 12;
}
public void withdraw(double amount)
{
balance -= amount;
}
public void deposit(double amount)
{
balance += amount;
}
}
然后这是包含主要方法的第二类代码:
public class AccountTester
{
public static void main(String[] args)
{
Account account = new Account(1857, 5000, 0.12);
account.setID(1857);
account.setBalance(5000);
account.setAnnualInterestRate(0.12);
System.out.println ("Account number: \n"+ +account.getID());
System.out.println ("The account balance is: $ \n" + +account.getbalance());
System.out.println("The Annual Interest Rate is: $ \n" + account.getannualInteresrRate());
account.deposit(150);
System.out.println("The account balance is: $ \n" +account.getbalance());
account.withdraw(50);
System.out.println("The account balance is: $ \n" +account.getbalance());
System.out.println ("The monthly interest earned is: $ \n" + +account.getbalance() * account.annualInterestRate());
System.out.println ("The account was created on: \n" + +account.getdateCreated());
}
}
答案 0 :(得分:0)
您当前的问题是,在定义annualInterestRate
字段时没有使用camelCasedNames,因此它不存在!它目前被命名为annualinterestrate
(注意没有上限!)。您应该将其重命名以匹配您在其他地方使用的内容。
此外,该字段还有另一个问题,即您已将其声明为final
。这意味着您无法在创建对象后对其进行修改,因此除非您删除setAnnualInterestRate
修饰符,否则您的final
方法注定会失败。因此,字段声明应如下所示:
private double annualInterestRate = 0.12;
一般来说,您的命名惯例显然会让您感到非常悲伤。您在评论中指出您不想使用this
关键字,因为您的教师尚未介绍它,这没关系,但您应该至少以某种方式命名您的变量看起来很明显发生了什么以及它是否有效。使用小写"a"
前缀变量名称不是答案。相反,如果您需要避免命名冲突,请考虑有意义的前缀或后缀。例如:
public void setBalance (double newBalance)
{
balance = newBalance;
}
您在其他地方还有其他拼写错误,包括您的AccountTester
课程。您需要仔细检查代码并确保名称完全匹配。使用带有实时编译警告和自动完成功能的Eclipse或NetBeans等IDE可能会为您节省很多麻烦。