我目前正在尝试编写一个非常简单的程序来测试" Random" class(java.util.Random)有几种方式,但是在尝试运行时我收到Null Pointer Exception错误。
我的代码:
import java.util.Random;
public class RandomTester
{
public Random r;
public RandomTester()
{
Random r = new Random();
}
public void printOneRandom()
{
int s = 0;
s = r.nextInt(256); //NULL POINTER EXCEPTION HERE
System.out.println("Random 8-bit number: " + s);
}
public void printMultiRandom(int howMany)
{
for(int i=0 ; i<howMany ; i++)
{
System.out.println("Random 8-bit number: " + r.nextInt(256));
}
}
}
如果我将构造函数从RandomTester()移动到其中一个方法,它可以正常工作,但我认为以上述方式编写它应该没问题。我可能只是不完全掌握一些基本的东西,或者我应该在其他地方实例化该对象。
感谢您的帮助,我没有使用BlueJ(学习者IDE)显示主要方法。这也是我第一次探索一些基本课程。
答案 0 :(得分:1)
更改此
Random r = new Random();
到
r = new Random();
您之前正在初始化一个名称会影响您的实例字段的其他局部变量。因此,您的实例字段已初始化为默认值null
。
当您尝试在其中一种方法中使用它时,它仍然是null
并在您尝试取消引用它以调用方法时为您提供NullPointException
。
答案 1 :(得分:0)
您正在构造函数中创建变量。请改用this.r = new Random();
。