Получение NullPointerException с объектным массивом

1

Я пишу программу, чтобы подражать игре "Сделка или нет".

Предыстория сделки или сделки нет: 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));

}
  • 0
    На какой строке вы получаете исключение Null Pointer? Укажите это нам с комментарием.
  • 0
    Получение, когда я выполняю инструкцию println в конце BoxList (для метода getValue). Исключение, return boxArray[index].getValue(); при return boxArray[index].getValue();
Теги:
arrays

1 ответ

5
Лучший ответ

Вы правильно инициализировали свой boxArray, но вы инициализировали локальную переменную boxArray, а переменная вашего экземпляра boxArray была boxArray, поэтому Java инициализировала ее значением null, вызывая исключение. + Изменить

Box[] boxArray = new Box[monetaryAmounts.length];

в

boxArray = new Box[monetaryAmounts.length];
  • 0
    Вы победили меня в этом rgettman.
  • 0
    Спасибо. Я отмечу как ответ в правильном промежутке времени.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню