如何构造数组的引用?

时间:2011-11-02 08:14:34

标签: 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的cartItem数组的引用,以及对超市中可用项目数组的引用。构造函数将项数组的引用作为参数并初始化此属性。构造函数也可以构造篮子。

购物者完成了这堂课的购物。购买物品的政策如下。假设库存中有 k 项目,她会生成一个介于0和 k 之间的随机数来选择一个项目然后购买50个该项目。如果该项目少于50件,她还有责任重新存货。

2 个答案:

答案 0 :(得分:3)

当您说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;
    }
}

答案 1 :(得分:2)

您以静态方式访问CartItem.cartItem。只需删除CartItem.即可。


除此之外,您的代码存在一些潜在问题:

  1. 当您执行CartItem[] cartItem = new CartItem[100];时,您没有初始化数组中的元素。你需要遍历项目并初始化它们,否则它们将为null ..

  2. randomGenerator.nextInt(numOfItems-1);nextInt(n)方法随机化了一个数字0(包含)和n(已排除)。当您通过numOfItems - 1时,您可能会丢失随机(最后一个)中的一个元素。

  3. Shop(或shop?)方法不应该采用它可以购买的项目数组而不是已经将数组作为实例变量吗?

    < / LI>