我正在使用BlueJ中的Java程序,我使用伪随机生成器生成最大数字和最小数字之间的随机数。我没有得到任何语法错误,但当我调用该方法时,它说它是空的。有谁有想法吗?我导入了Random-class,在构造函数中称为randomizer。
public void attackEnemy()
{
int damage = 0;
int max = 41;
int min = 20;
damage = randomizer.nextInt(max - min) + min;
health = health - damage;
}
答案 0 :(得分:3)
你做到了吗?
randomizer = new Random();
显示的代码段中唯一可以null
的值是randomizer
对象。您应该将它实例化到正在使用的类中的其他位置。
答案 1 :(得分:2)
像这样初始化你的randomizer
: -
randomizer = new Random(); // Without this, it'll throw a NPE
答案 2 :(得分: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;
}