0

我创建了一个名为 Account 的类。然后我实例化类型类的对象。所有代码都保存在文件 TestAccount 中。但是系统给了我一个错误,如下所示

线程“main”中的异常 java.lang.ExceptionInInitializerError at testaccount.TestAccount.main(TestAccount.java:8) 原因:java.lang.RuntimeException:无法编译的源代码 - 类 Account 是公共的,应在名为 Account 的文件中声明.java at 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);
      }
}

有人可以告诉我我做错了什么吗?

4

2 回答 2

1

您必须创建一个名为的新文件Account.java并将您的帐户类放在那里。这是因为当您从另一个类调用帐户时,jvm 会去寻找Account.class,如果您的帐户类在一个名为的文件中TestAccount.class,它将无法找到它。

否则编译器不会编译你的文件

只要您的两个类都在同一个包(文件夹)中,您就不必做任何特殊的事情来“链接”两者。

当然,除非你想嵌套类,在这种情况下你把你的Account类放在你的TestAccount类中。虽然我不建议这样做,因为它非常混乱。

于 2013-11-01T00:28:35.933 回答
0

这不是一个好的做法,并且已经存在的解决方案更好,但是您可以将 Account 类移动到 TestAccount 中并使其成为静态(将 static 放在类定义的前面)。那也行。

于 2013-11-01T00:34:43.783 回答