我创建了一个名为Account的类。然后我实例化类型类的对象。所有代码都保存在TestAccount文件中。但系统给我一个错误,如下所示
线程“main”java.lang.ExceptionInInitializerError中的异常 at testaccount.TestAccount.main(TestAccount.java:8) 引起:java.lang.RuntimeException:无法编译的源代码 - 类帐户是公共的,应该在名为Account.java的文件中声明 在testaccount.Account。(TestAccount.java:20) ......还有1个 Java结果:1
以下是我的代码:
package testaccount;
public class TestAccount
{
public static void main(String[] args)
{
Account Account1=new Account();
Account1.setId(1122);
Account1.setBalance(20000);
Account1.setAnnualInterestRate(4.5);
System.out.println("The monthly interest rate is " + Account1.getMonthlyInterestRate());
System.out.println("The balance after the withdrawal is "+ Account1.withdraw(2000));
System.out.println("The balabce after the deposit is " + Account1.deposit(3000));
}
}
public class Account
{
private int id;
private double balance;
private double annualInterestRate;
private static long dateCreated;
public Account()
{
id=0;
balance=0;
annualInterestRate=0;
dateCreated=System.currentTimeMillis();
}
public Account(int newId,double newBalance)
{
id=newId;
balance=newBalance;
}
public int getId()
{
return id;
}
public void setId(int newId)
{
id=newId;
}
public double getbalance()
{
return balance;
}
public void setBalance(double newBalance)
{
balance=newBalance;
}
public double getAnnualInterestRate()
{
return annualInterestRate;
}
public void setAnnualInterestRate(double newAnnualInterestRate)
{
annualInterestRate=newAnnualInterestRate;
}
public static long getDateCreate()
{
return dateCreated;
}
public double getMonthlyInterestRate()
{
return (annualInterestRate/12);
}
public double withdraw(double newWithdraw)
{
return (balance-newWithdraw);
}
public double deposit(double deposit)
{
return (balance+deposit);
}
}
有人可以告诉我我做错了吗?
答案 0 :(得分:1)
您必须制作一个名为Account.java
的新文件,并将您的帐户类放在那里。这是因为当您从另一个类呼叫帐户时,jvm将查找Account.class
,如果您的帐户类位于名为TestAccount.class
的文件中,则无法找到它。
否则编译器不会编译您的文件
只要你的两个类都在同一个包(文件夹)中,你就不必做任何特殊的事情来“链接”这两个类。
当然,除非您想要嵌套类,否则您将Account
类放在TestAccount
类中。虽然我不推荐这个,因为它非常混乱。
答案 1 :(得分:0)
这不是一个好的实践,并且已经存在的解决方案更好,但您可以在TestAccount中移动Account类并使其成为静态(在类定义前放置静态)。那也行。