循环检查项目的字符串数组

时间:2013-09-24 21:36:12

标签: java arrays string

我有这个数组

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")) {


}

4 个答案:

答案 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);
   }
}