2个对象互相实例化时的异常

时间:2017-06-09 11:29:17

标签: java object exception

所以我创建了一个简单的基于文本的游戏,但我在此过程中想出了异常/错误。 我有3个类,一个是名为Main的类,一个是名为Mage的类,另一个是名为Warrior的类。

因此,在游戏玩家使用能力时,它会降低其他玩家的健康点数。

因此,当player1使用abbility时,例如在这种情况下,Fireball会调用Warrior类中的reduceHP方法,将player2的HP减少44.方法reduceHP获取传入的数字并将其从健康状态中减去球员的分数。

Warrior player2 = new Warrior();

public void FireBall(){

player2.reduceHP(44);

}

同样的事情发生在Mage类中。当player1使用Warrior abbility时,它会将player2的HP降低65。

Mage player1 = new Mage();

public void Stab(){

player1.reduceHP(65);


}

现在的问题是,当我在主类中调用这些abbility / abbilities(stab和fireball)时,我得到以下错误

at Warrior.<init>(Warrior.java:4)
at Mage.<init>(Mage.java:4)
at Warrior.<init>(Warrior.java:4)
at Mage.<init>(Mage.java:4)
at Warrior.<init>(Warrior.java:4)
at Mage.<init>(Mage.java:4)
at Warrior.<init>(Warrior.java:4)
at Mage.<init>(Mage.java:4)
at Warrior.<init>(Warrior.java:4)
at Mage.<init>(Mage.java:4)
at Warrior.<init>(Warrior.java:4)
at Mage.<init>(Mage.java:4)
at Warrior.<init>(Warrior.java:4)

ETC... it keeps on going

我想知道为什么会这样?如果还有另一种方法,请告诉我,因为我对java很新。感谢所有的帮助,非常感谢,我希望这不是一个非常愚蠢的问题。

2 个答案:

答案 0 :(得分:1)

问题是两个字段player1player2。我想你想要有两个对象,一个用于Player 1,一个用于Player 2.相反,你在(隐式)构造函数中创建了无数个对象。

我猜你是初学者,所以我不会在这里讨论细节。要解决这个问题,您可能想要创建一个知道这两个玩家的第三个类(可能名为Game?)。

答案 1 :(得分:0)

您应该在Main类中实例化玩家,然后通过setter传递对它们的引用。这样,每个对象都有一个实例,它们将互相引用。