gpt4 book ai didi

Java - 从对象数组中删除对象

转载 作者:行者123 更新时间:2023-12-01 09:48:18 27 4
gpt4 key购买 nike

我正在编写一个大型程序,其中涉及一个名为Player的对象。 Player定义如下:

public class Player
{
public static String name;
public static Item inventory[] = new Item[10];
public static int items;

/* ... */

public void addItem(String itemName, int itemType)
{
if ((items + 1) <= 10) {
inventory[items] = new Item(itemName, itemType);
items++;
}
}

public void removeItem(int x)
{
for (int i = x; i < items; i++)
inventory[i] = inventory[i+1];
}
}

我现在添加库存处理,因为它比以后添加要容易得多,但是 inventory 直到开发的后期才会使用。我无法查看 removeItem 是否有效。我修改了一个名为 strstrip 的函数来得到这个...removeItem 可以工作吗?如果没有,为什么?

最佳答案

为您的类创建单元测试,特别是如果您要构建“大型且复杂的程序”。这将保证您编写的代码稍后可以工作,并且如果您更改代码,单元测试的失败应该表明存在问题。单元测试还使您能够检查您的方法是否按预期工作。

根据其他评论,请考虑使用 List 接口(interface)而不是数组,除非您有一些特定的要求(我无法想象任何要求)。当然,在类中拥有 public static 字段看起来很可疑。

编辑

只是为了指示代码的外观以及如何从主方法调用方法。

public class Player {

private String name;
private List<Item> inventory;
private int items;

public Player() {
this.inventory = new ArrayList();
}

public void addItem(String itemName, int itemType) {
this.inventory.add(new Item(itemName, itemType));
}

public void removeItem(int x) {
Item itemToRemove = this.inventory.get(x);
if (itemToRemove != null) {
this.inventory.remove(itemToRemove);
}
}

public static void main(String[] args) {
// create a new instance
Player player = new Player();
// call a method on the instance
player.addItem("bla", 0);
}
}

关于Java - 从对象数组中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37799830/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com