我有这个数组
public static ArrayList<String> inventory = new ArrayList<String>();
并将玩家物品存放在其中。
我想在商店类中添加一个除了pickaxe之外的所有商品的功能,我怎样才能创建一个循环来检查数组中除了“pickaxe”之外的东西是否有什么东西以及是否要删除它?
删除我有一个空白
public void removeAllInventory() {
inventory.clear();
}
或
public void removeInventory(String item) {
inventory.remove(item);
}
我可以编辑removeAllInventory来忽略pickaxe并创建一个名为removeAllShop的新void吗?如果是这样,那个空虚会怎么样?
这是我需要把它放进去的地方:
else if (input.input.equalsIgnoreCase("all")) {
}
答案 0 :(得分:2)
循环遍历列表,检查每个元素是否等于pickaxe,如果不是则删除它。
Iterator<String> i = inventory.iterator();
while (i.hasNext()) {
if (i.next().equalsIgnoreCase("pickaxe"))
i.remove()
}
答案 1 :(得分:1)
您不应该编辑removeAllInventory()
以删除除了镐之外的所有内容。它的名字将不再有意义,而且保持这种似乎是一种合理的惯例。
但是你可以添加一个新的方法removeAllInventoryExcept(String item)
,除了给定的项目之外,它会删除所有内容。
希望这有帮助。
编辑:为了加强这个答案,我还想建议一个“开箱即用”的解决方案:
public void removeAllInventoryExcept(String item) {
ArrayList<String> newInv = new ArrayList<String>();
newInv.add(item);
inventory = newInv;
}
这避免了代价高昂的迭代和字符串比较。
答案 2 :(得分:0)
我假设清单中的所有项目都是项目类的祖先,而不仅仅是一个字符串。
您可以循环遍历ArrayList,获取每个元素的名称并将其与pickaxe名称进行比较。
或
您可以遍历ArrayList并检查每个项目是否为instanceof
pickaxe,如果不是,则将其从ArrayList
edit *您似乎指定ArrayList的类型为String,因此请忽略第二个选项
答案 3 :(得分:0)
for (String item : inventory) {
if (!"pixckaxe".equalsIgnoreCase(item)) {
inventory.remove(item);
}
}