Как бы я go удалил индексы, которые идут до (а не после!) Индекса, указанного пользователем в Java с использованием ArrayLists? - PullRequest
0 голосов
/ 02 марта 2020

Я работаю над программой, которая позволяет вводить начинки для пиццы. Это в значительной степени завершено, за исключением метода removeToppings ().

Проблема в том, что я не могу найти правильный способ удалить начинки в индексе, который выбирает пользователь, и все начинки ДО этого. Я нашел множество способов удалить индексы, которые приходят ПОСЛЕ , но даже тогда я не могу найти способы их отменить.

Вот метод, о котором идет речь:

public static void removeTopping() 
    {
        Scanner in = new Scanner(System.in);

        printPizza();
        System.out.println("What topping do you want to remove?\n"
                + "Keep in mind, this loses everything else above it.\n"
                + "Enter index number: ");
        int remove = in.nextInt();

        toppings.subList(remove, toppings.size()).clear(); //this is the problem line!
    }

Метод printPizza () выведет что-то похожее на это:

|index|topping|
|  0  | cheese
|  1  | three
|  2  | cheese
|  3  | two
|  4  | cheese
|  5  | one
|  6  | sauce
|  7  | crust

Скажем, я ввожу 5, программа удалит индексы 5, 6 и 7. Я бы хотел, чтобы он удалил 0-5 , Любые указатели будут высоко оценены.

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Если в вашем примере вы также хотите удалить позицию 5:

toppings.subList(0, remove + 1).clear();
1 голос
/ 02 марта 2020

Вы можете использовать для l oop, чтобы достичь этого.

l oop начнется с удаления индекса, указанного в переменной remove. Затем l oop будет уменьшаться i, пока не достигнет -1, к этому моменту он удалит каждый элемент ниже установленного вами индекса.

    for (int i = remove; i > -1; i--) {
        myList.remove(i);
    }
...