Как создавать ссылки для массива?

#java

#java

Вопрос:

 public class ShoppingCart {

    //initialise the array

    Item[] myItemList = new Item[100];
    CartItem[] cartItem = new CartItem[100];
    /* Just some getter/setter methods ignore them for now.
    public Item[] getItemList () {
        return this.myItemList;
    }

    public CartItem[] getCartItem () {
        return this.cartItem;
    }
 */
    Random randomGenerator = new Random();
    public CartItem[] Shop (int numOfItems) {
        for (int i = 0; i < numOfItems; i  ) {
            CartItem.cartItem[i] =randomGenerator.nextInt(numOfItems-1); 
        }

        return cartItem;
    }
}
  

Вот объяснение для класса:
ShoppingCart.java : Это полная корзина покупателя. Другими словами, покупатель помещает товары, которые он покупает, в экземпляр этого класса. Этот класс имеет два атрибута: ссылку на массив объектов, называемый basket, и ссылку на массив товаров, доступных в супермаркете. Конструктор принимает ссылку на массив элементов в качестве параметра и инициализирует этот атрибут. Конструктор также может создавать корзину.

Покупатель завершает свои покупки в этом классе. Политика покупки товара следующая. Предположим, что в инвентаре есть k предметов, она генерирует случайное число от 0 до k, чтобы выбрать предмет, а затем покупает 50 штук этого предмета. Она также несет ответственность за пополнение запасов элемента, если этого элемента меньше 50 штук.

Ответ №1:

Вы не должны указывать класс, когда говорите CartItem.cartItem[i] = randomGenerator.nextInt(numOfItems-1) , поскольку CartItem не является статическим членом. Вместо этого вы должны сказать cartItem[i] =randomGenerator.nextInt(numOfItems-1) , что приведет к:

 public class ShoppingCart {


    Item[] myItemList = new Item[100];
    CartItem[] cartItem = new CartItem[100];
    /* Just some getter/setter methods
    public Item[] getItemList () {
        return this.myItemList;
    }

    public CartItem[] getCartItem () {
        return this.cartItem;
    }
 */
    Random randomGenerator = new Random();
    public CartItem[] Shop (int numOfItems) {
        for (int i = 0; i < numOfItems; i  ) {
            cartItem[i] =randomGenerator.nextInt(numOfItems-1); 
        }

        return cartItem;
    }
}
  

Ответ №2:

Вы получаете доступ CartItem.cartItem статическим способом. Просто удалите CartItem. , и все будет в порядке.


Кроме того, у вас есть некоторые потенциальные проблемы с вашим кодом:

  1. Когда вы это делаете CartItem[] cartItem = new CartItem[100]; , вы не инициализируете элементы в массиве. Вам нужно перебирать элементы и инициализировать их, иначе они будут нулевыми..

  2. randomGenerator.nextInt(numOfItems-1); : nextInt(n) метод рандомизирует число beteen 0 (включено) и n (исключено). При передаче numOfItems - 1 вам потенциально не хватает одного элемента из вашего случайного (последнего).

  3. Разве метод Shop (или shop ?) Не должен принимать массив элементов, которые он может хранить, вместо того, чтобы уже иметь массив в качестве переменной экземпляра?