2015-11-02 2 views
0

Если у меня есть 10 объектов в списке массивов, и я хочу удалить конкретный на основе userinput, как это сделать?Удалить объект из списка массивов с пользовательским вводом

public ArrayList<SmallItem> Backpack = new ArrayList<SmallItem>(); 
Scanner t = new Scanner(System.in); 
String userInput = t.next(); 

public void dropItemByName() { 
    if(Backpack.contains(t)) { 
      Backpack.remove(item); 
     } 

    } 
+0

является пользовательским вводом индекса для объекта или самого объекта? – AbtPst

+1

Рассмотрите возможность использования 'Map', а не' List'. – fzzfzzfzz

+1

Какова связь между ArrayList и пользователем? у вас, похоже, есть список объектов SmallItem, но ваш пользовательский ввод является строкой – AbtPst

ответ

0

Вы не хотите, чтобы проверить Backpack.contains(t), если вы на самом деле ищут tBackpack в. t - это ваш Scanner сам объект, а не вход.

Если вы хотите, чтобы пользователь ввел индекс объекта, который должен быть удален, то вы хотите сделать userInput в int и сделать это:

if (userInput < Backpack.size()) { 
    Backpack.remove(userInput); 
} 

Если вы хотите, чтобы пользователь введите имя или какой-либо другой ввод, ссылающийся на объект, а не на его индекс, тогда вы должны написать метод, который принимает userInput в качестве параметра и определяет, какой из SmallItem удалить из Backpack и удаляет его.

Вот пример того, как это можно было бы сделать, если каждый SmallItem имеет переменную name типа String:

for (int i=0; i<Backpack.size(); i++) { 
    if (Backpack.get(i).name.equals(userInput) { 
     Backpack.remove(i); 
     break; 
    } 
} 

Этот пример удаляет первый SmallItem в Backpack, который имеет name, который соответствует userInput. Если вы хотите, чтобы он удалял все SmallItem в Backpack с этим значением name вместо первого, просто удалите оператор break.

0

Если я получаю это пишу, я думаю, что вы хотите удалить элемент (т) из списка

Таким образом, вы должны изменить переменную (пункт) переменной (т или пользовательского ввода), как показано ниже:

Строка userInput = t.nextline();

общественного недействительный dropItemByName() {

if(Backpack.contains(userInput)) { 
     Backpack.remove(userInput); 
    } 

} 
Смежные вопросы