我正在用3个单独的文件中的3个类编写这个基本程序。它应该是一个由一个名为PairOfDice的类组成的程序,由两个Die对象组成。包含设置和获取单个骰子值的方法,掷骰子的方法以及返回两个骰子值的当前总和的方法。一个名为RollingDice的驱动程序类,用于实例化和使用PairOfDice对象。
它编译没有问题,但是当我尝试运行它时会导致运行时错误,如下所示:
线程“main”中的异常java.lang.NullPointerException at PairOfDice.rollDice(PairOfDice.java:42)at RollingDice.main(RollingDice2.java:16)
public class RollingDice
{
public static void main(String[] args)
{
PairOfDice pairofdice=new PairOfDice();
pairofdice.rollDice();
System.out.println(pairofdice.getDie1() +"\t" +pairofdice.getDie2());
}
}
public class PairOfDice
{
private Die die1, die2;
public PairOfDice()
{
Die die1=new Die();
Die die2=new Die();
}
public int getDie1()
{
return die1.getFaceValue();
}
public int getDie2()
{
return die2.getFaceValue();
}
public void setDie1(int dieValue)
{
die1.setFaceValue(dieValue);
}
public void setDie2(int dieValue)
{
die2.setFaceValue(dieValue);
}
public void rollDice()
{
die1.roll();
die2.roll();
}
public int sum()
{
return die1.getFaceValue()+die2.getFaceValue();
}
}
public class Die
{
private final int MAX = 6;
private int faceValue;
public Die()
{
faceValue = 1;
}
public void roll()
{
faceValue = (int)(Math.random() * MAX) + 1;
}
public void setFaceValue(int value)
{
faceValue = value;
}
public int getFaceValue()
{
return faceValue;
}
public String toString()
{
String result = Integer.toString(faceValue);
return result;
}
}
答案 0 :(得分:0)
使用
public PairOfDice()
{
die1=new Die();
die2=new Die();
}
您正尝试在构造函数中声明die1
和die2
。因此局部变量没有初始化。