因此,我创建了一个应该创建模具的模具类,然后允许我滚动它们,拉出它们的值和边数。我现在的问题是,由于抛出NullPointerException,我无法在测试过程中掷骰子。
这是模具类的代码:
package com.catalyse.die;
import java.util.Random;
public class Die
{
// instance variables
private static int dieNum = 0;
private int myDieValue;
private int myDieSides;
private Random rand;
// Dice Class Constructors
public Die()
{
dieNum++;
this.myDieValue = 1;
this.myDieSides = 4;
}
public Die(int numSides)
{
if ((numSides < 4) || (numSides > 100)) {
System.out.println("Error! You cannot have more than 100 sides or less than four!");
System.exit(0);
}
else {
myDieSides = numSides;
myDieValue = 1;
}
}
// getter methods
public int getDieSides()
{
System.out.println(myDieSides);
return 0;
}
public int getDieValue()
{
System.out.println(myDieValue);
return 0;
}
// setter methods
private void setDieSides(int newNumSides)
{
myDieSides = newNumSides;
}
public void rollDie()
{
myDieValue = (rand.nextInt(myDieSides) + 1);
}
// other methods
public void printDie(int dieNum)
{
if (dieNum == 1) {
System.out.println("Die Value: "+myDieValue);
}
else {
System.out.println("Die "+dieNum+" Value: "+myDieValue);
}
}
}
这是测试课程。
package com.catalyse.die;
public class TestDieClass
{
public static void main(String [] args)
{
Die One = new Die();
Die Two = new Die(50);
Die Three = new Die(99);
One.getDieSides();
One.getDieValue();
Two.getDieSides();
Two.getDieValue();
Three.getDieSides();
Three.getDieValue();
One.rollDie();
Two.rollDie();
Three.rollDie();
One.getDieValue();
Two.getDieValue();
Three.getDieValue();
}
}
这是错误
4
1
50
1
99
1
Exception in thread "main" java.lang.NullPointerException
at com.catalyse.die.Die.rollDie(Die.java:83)
at com.catalyse.die.TestDieClass.main(TestDieClass.java:27)
myDieValue = (rand.nextInt(myDieSides) + 1);
您尚未初始化,rand
因此rand是null
所以,
private Random rand= new Random();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句