我一直在研究一个相当大的程序,并且认为是时候分班上课了。 1个.java文件用于GUI代码,1个.java文件用于GUI所提供的功能背后的机制。但是,这是我的问题,我在彼此之间创建了每个类的实例,然后程序拒绝启动,因此我显然做错了什么。在RPG类中,我具有以下代码行:

public Mechanics mechanics = new Mechanics();

对于Mechanics类,我有以下代码:
public RPG rpg = new RPG();

我这样做的原因是尝试这样做:
我的很多变量都在RPG类中,我希望能够从rpg调用它们并对其进行操作,然后将它们发送回RPG,这是我用来测试此功能的代码(来自Mechanics类):
class Mechanics{
public RPG rpg = new RPG();
  public Mechanics(){
  }
  public void helloWorld(){
    System.out.println("Hello World!");
    System.out.println("Health before:"+rpg.Health);
    rpg.Health = rpg.Health - 5;
    System.out.println("Health after:"+rpg.Health);
  }
 }

是的,Health是我的int类中的公共RPG

RPG类中,这是我用来测试Mechanics类的代码:
mechanics.helloWorld();

这是我的问题:代码可以编译,但是当我尝试运行它时,出现此错误:
 at Mechanics.<init>(Mechanics.java:15)
 at RPG.<init>(RPG.java:127)

这是我的问题。我什至这样做对吗?使我的程序不想运行的代码有什么问题?

添加:我也尝试将其他类也称为private,该程序将编译,但仍然拒绝启动,并向我提供相同的错误
Mechanics的第15行:
public RPG rpg = new RPG();
RPG的第127行:
public Mechanics mechanics = new Mechanics();

最佳答案

Mechanics的第15行可能更像:

public RPG rpg = new RPG(this); // must be in constructor or non static method

在RPG中:
public Mechanics mechanics;

在构造函数中:
this.mechanics = mechanics;

07-24 09:46
查看更多