2

我正在使用 BlueJ 中的 Java 程序,并且我正在使用伪随机生成器来生成最大数和最小数之间的随机数。我没有收到任何语法错误,但是当我调用该方法时,它说它是空的。有人有什么主意吗?我已经导入了 Random 类,它在构造函数中被称为 randomizer。

public void attackEnemy()
{
    int damage = 0;
    int max = 41;
    int min = 20;
    damage = randomizer.nextInt(max - min) + min;
    health = health - damage;
}
4

3 回答 3

3

你做了这个了吗?

randomizer = new Random();

null显示的片段中唯一可以包含的值是randomizer对象。您应该在正在使用的类中的其他地方实例化它。

于 2013-03-12T14:40:13.527 回答
2

像这样初始化你的randomizer: -

randomizer = new Random(); // Without this, it'll throw a NPE
于 2013-03-12T14:40:44.660 回答
0

您需要说明随机数发生器实际上是随机数。在您的原始代码中看起来您还没有完全完成计算。看看下面:

public void attackEnemy(){

int max = 41;
int min = 20;
Random randomizer = new Random();

int damage = min + (max - min) * randomizer.nextInt();
health = health - damage;
}

我还认为您收到空输出的原因是因为您没有返回任何内容。因此,您还可以将其显示如下:

public int attackEnemy(){

int max = 41;
int min = 20;
Random randomizer = new Random();

int damage = min + (max - min) * randomizer.nextInt();
health = health - damage;

return health;
}
于 2016-05-09T17:53:12.127 回答