具有用户输入的ArrayList

时间:2011-11-06 00:05:04

标签: java arrays arraylist

之前创建了一个名为ShoppingList的shoppingItem数组。每个购物项目由用户输入,并询问名称,优先级,价格和数量。现在我正试图用arraylist做同样的事情,但我遇到了麻烦。

当我拥有阵列

时,这是我的主要内容
public static void main(String[] args) {
    ShoppingList go = new ShoppingList();
    go.getElement();
    go.Sort();
    System.out.println("hello");
    go.displayResults();
}

并且getElement方法是这样的:

public void getElement(){
    System.out.println("You can add seven items to purchase when prompted ");
    shoppingList = new ShoppingItem[numItems]; //creation of new array object
    for (int i = 0; i<= numItems - 1; i++) {
        shoppingList[i] = new ShoppingItem(); //shopping item objects created
        System.out.println("Enter data for the shopping item " + i);
        shoppingList[i].readInput();
        System.out.println();
    }
}

现在有了arraylist,我只是输了。

public static void main(String[] args) {
    ArrayList<ShoppingItem>ShoppingList = new ArrayList<ShoppingItem>();
    ShoppingList //how do i call the getElement which then calls readInput()?
}

谢谢!!我现在完全明白了。我之前使用了bubblesort按优先顺序对项目进行排序:

public void Sort(){
    boolean swapped = true;
    int j = 0;
    ShoppingItem tmp;
    while (swapped) {
        swapped = false;
        j++;
        for(int i = 0; i < shoppingList.length - j; i++) {
            if (shoppingList[i].getItemPriority() > shoppingList[i+1].getItemPriority()) {
                tmp = shoppingList[i];
                shoppingList[i] = shoppingList[i+1];
                shoppingList[i + 1] = tmp;
                swapped = true;
            }
        }
    }
}

我仍然可以使用这种方法,对吧?只是某些事情会改变,例如.. .length会是.size()?或者我无法做到这一点?

1 个答案:

答案 0 :(得分:0)

ArrayList的工作方式与数组类似,但动态调整大小。而不是someArray [2]来获取一个元素,你可以使用someArrayList.get(2)..并且要添加元素(到数组列表的末尾),只需调用someArrayList.add(newElementHere)。所以我已经改变了你的代码(只有1个方法)来创建一个名为shoppingList的ShoppingItems列表(你有这个部分),然后它为7个项目执行for循环。每次创建ShoppingItem的新实例时,都会对其执行readInput方法,然后将其添加到shoppingList的末尾。我考虑创建一个名为ShoppingList的新类,它封装了ArrayList并提供了调用方法(如askForItems(),sort(),display()等),但是下面这段代码应该让你开始。

public static void main(String[] args) 
{
    ArrayList<ShoppingItem> shoppingList = new ArrayList<ShoppingItem>();

    System.out.println("You can add seven items to purchase when prompted ");
    for (int i = 0; i <7; i++) {
        ShoppingItem item = new ShoppingItem(); //shopping item objects created
        System.out.println("Enter data for the shopping item " + i);
        item.readInput();
        shoppingList.add(item);
        System.out.println();
    }
}