首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >随机生成器返回null

随机生成器返回null
EN

Stack Overflow用户
提问于 2013-03-12 22:38:49
回答 3查看 1.6K关注 0票数 2

我正在用BlueJ编写一个Java程序,我正在使用一个伪随机生成器来生成一个介于最大数和最小数之间的随机数。我没有得到任何语法错误,但是当我调用这个方法时,它告诉我它是一个空的。有谁知道吗?我已经导入了Random类,它在构造器中被称为随机化器。

代码语言:javascript
复制
public void attackEnemy()
{
    int damage = 0;
    int max = 41;
    int min = 20;
    damage = randomizer.nextInt(max - min) + min;
    health = health - damage;
}
EN

回答 3

Stack Overflow用户

发布于 2013-03-12 22:40:14

这是你做的吗?

代码语言:javascript
复制
randomizer = new Random();

在所显示的代码段中,唯一可以为null的值是randomizer对象。您应该在类中正在使用的其他位置实例化它。

票数 3
EN

Stack Overflow用户

发布于 2013-03-12 22:40:45

像这样初始化你的randomizer

代码语言:javascript
复制
randomizer = new Random(); // Without this, it'll throw a NPE
票数 2
EN

Stack Overflow用户

发布于 2016-05-10 01:53:12

你需要声明随机数发生器实际上是一个随机数。在您的原始代码中,看起来您也没有完全完成计算。看一下下面的内容:

代码语言:javascript
复制
public void attackEnemy(){

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

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

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

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15364237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档