Вы не хотите, чтобы проверить Backpack.contains(t)
, если вы на самом деле ищут t
Backpack
в. 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
.
является пользовательским вводом индекса для объекта или самого объекта? – AbtPst
Рассмотрите возможность использования 'Map', а не' List'. – fzzfzzfzz
Какова связь между ArrayList и пользователем? у вас, похоже, есть список объектов SmallItem, но ваш пользовательский ввод является строкой – AbtPst