ArrayList с пользовательским вводом - PullRequest
2 голосов
/ 06 ноября 2011

Ранее был создан массив shoppingItems под названием ShoppingList. Каждый торговый элемент вводится пользователем и запрашивается имя, приоритет, цена и количество. Сейчас я пытаюсь сделать то же самое с 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()?
}

Спасибо! Теперь я полностью понимаю это. Ранее я использовал сортировку пузырьков для сортировки элементов по приоритету:

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;
            }
        }
    }
}

Я все еще могу использовать этот метод, верно? Только некоторые вещи могут измениться, например ... длина будет .size ()? Или я не могу это сделать?

1 Ответ

0 голосов
/ 06 ноября 2011

ArrayList работает как массив, но имеет динамический размер. Вместо someArray [2], чтобы получить элемент, вы должны использовать someArrayList.get (2). А для добавления элементов (в конец списка массивов) просто вызовите someArrayList.add (newElementHere). Итак, я изменил ваш код (всего на 1 метод), который создает список ShoppingItems с именем shoppingList (у вас была эта часть), а затем выполняет цикл for для 7 элементов. Каждый раз, когда он создает новый экземпляр 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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...