“掷骰子程序中的线程”主“java.lang.NullPointerException”错误

时间:2017-07-04 16:39:05

标签: java

我正在用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;
    }
}

1 个答案:

答案 0 :(得分:0)

使用

 public PairOfDice()
    {
        die1=new Die();
        die2=new Die();
    }

您正尝试在构造函数中声明die1die2。因此局部变量没有初始化。