Итак, я создал класс умирающего, который должен создать die, а затем разрешите мне катить их, вытягивать их значения и количество сторон. Моя проблема заключается в том, что я не могу опрокинуть кубик во время тестирования, поскольку он генерирует исключение NullPointerException.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)
Как я предположил, что заслужил новый вопрос. Но почему вы изменили свой код? Ваш предыдущий код в 'rollDie()' был правильным.'Random rand = new Random(); int i = (rand.nextInt (myDieSides) + 1); '. Вы изменили его и, следовательно, ошибку. – SudoRahul
Да, я понял, что на рандере уже объявлен ранд, и он казался излишним, я просто забыл инициализировать верхнюю часть. – Taylor