0

我有这个数组

public static ArrayList<String> inventory = new ArrayList<String>();

并将玩家物品存储在其中。

我想在商店类中添加一个功能,它将出售除镐外的所有东西,我如何创建一个循环来检查数组中是否存在除“镐”以外的东西以及是否有删除它?

删除我有一个空白

public void removeAllInventory() {

    inventory.clear();

}

或者

public void removeInventory(String item) {

    inventory.remove(item);

}

我可以编辑 removeAllInventory 以忽略镐并创建一个名为 removeAllShop 的新空白或其他东西吗?如果是这样,那么那个空白会发生什么?

这是我需要把它放进去的地方:

else if  (input.input.equalsIgnoreCase("all")) {


}
4

4 回答 4

2

循环遍历列表,检查每个元素是否等于镐,如果不是则将其删除。

Iterator<String> i = inventory.iterator();
while (i.hasNext()) {
  if (i.next().equalsIgnoreCase("pickaxe"))
    i.remove()
}
于 2013-09-24T21:43:01.170 回答
1

您不应该编辑removeAllInventory()以删除除了镐之外的所有内容。它的名字不再有意义,而且它似乎是一个合理的例行程序。

但是您可以添加一个新方法 ,removeAllInventoryExcept(String item)它会删除除给定项目之外的所有内容。

希望这可以帮助。

编辑:为了加强这个答案,我还想提出“开箱即用”的解决方案:

public void removeAllInventoryExcept(String item) {
    ArrayList<String> newInv = new ArrayList<String>();
    newInv.add(item);
    inventory = newInv;
}

这避免了昂贵的迭代和字符串比较。

于 2013-09-24T21:40:57.353 回答
0

我假设库存中的所有项目都是项目类的祖先,而不仅仅是一个字符串。

您可以遍历 ArrayList,获取每个元素的名称并将其与镐名称进行比较。

或者

您可以遍历 ArrayList 并检查每个项目是否是instanceof 镐,如果不是,则将其从 ArrayList 中删除

编辑* 看来您指定 ArrayList 是字符串类型,所以忽略第二个选项

于 2013-09-24T21:43:31.763 回答
0
for (String item : inventory) {
   if (!"pixckaxe".equalsIgnoreCase(item)) {
       inventory.remove(item);
   }
}
于 2013-09-24T21:45:05.387 回答