Я пишу программу, чтобы подражать игре "Сделка или нет".
Предыстория сделки или сделки нет: http://en.wikipedia.org/wiki/Deal_or_No_Deal
При работе с конечным продуктом я написал разные классы. Тем не менее, я пытаюсь проверить один из моих классов и продолжать получать NullPointerException.
Я написал класс под названием "Коробка", который создает "ящики". Объект box - это поле, которое игрок выбирает. Он состоит из значения true/false и double boxValue. boolean variable
обозначает, будет ли она открыта/закрыта (true для open, false для закрытых). Значение double boxValue является фактическим значением, присвоенным этому полю.
public class Box {
//instance fields
private double boxValue; // the amount of $ in each box
private boolean openClose; // whether or not the box is closed
//Constructor
public Box(double boxValue) {
this.openClose = false;
this.boxValue = boxValue;
if (boxValue < 0) {
throw new IllegalArgumentException("Box value must be greater than 0");
}
}
}
Я написал еще один класс под названием BoxList. Это создает массив объектов Box, который будет служить игровой панелью, в сочетании с другими классами, которые я планирую написать. Основная идея заключается в том, что конструктор в BoxList создает массив, используя переданный в double array
как paramater, а затем создает массив Box Object той же длины переданного в двойном массиве и присваивает двойное значение каждому элементу parameter array
, к значению array
объектов Box в качестве соответствующего элемента.
Я написал образец основного метода для проверки, но когда я пытаюсь получить значение определенного element
Box в массиве BoxList, я получаю исключение NullPointerException. Может ли кто-нибудь предложить совет, чтобы помочь справиться с этим.
(Это отрезки более крупной программы... Я уже писал так много, что я не хотел забивать дальше)
public class BoxList {
private Box[] boxArray;
public BoxList(double[] monetaryAmounts) {
Box[] boxArray = new Box[monetaryAmounts.length];
for (int i = 0; i < boxArray.length; i++) {
boxArray[i] = new Box(monetaryAmounts[i]);
}
}
public double getValue(int index) {
return boxArray[index].getValue();
}
// A sample main method to test out various object methods
public static void main(String[] args) {
double[] monetaryAmounts = {.5, 1, 3, 7.5, 8, 10}; // test array
BoxList test = new BoxList(monetaryAmounts);
System.out.println(test.getValue(0));
}
Вы правильно инициализировали свой boxArray
, но вы инициализировали локальную переменную boxArray
, а переменная вашего экземпляра boxArray
была boxArray
, поэтому Java инициализировала ее значением null
, вызывая исключение. + Изменить
Box[] boxArray = new Box[monetaryAmounts.length];
в
boxArray = new Box[monetaryAmounts.length];
return boxArray[index].getValue();
приreturn boxArray[index].getValue();