之前创建了一个名为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()?或者我无法做到这一点?
答案 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();
}
}