【发布时间】:2018-07-10 21:45:16
【问题描述】:
这可能是一个愚蠢的问题,但是,我一直在从事这个项目,但无法让它发挥作用。我很沮丧,四处试验,让它以某种方式工作。我所做的更改是在 numOfItem 中添加了 -1。
如果有人能向我解释为什么这样做有效,我将不胜感激。我相信我的脑袋并没有真正正确地阅读代码。我的印象是,如果我要删除最后一个索引上的项目,它应该会引发错误。
for (int j = i; j < numOfItem - 1; j++)
这段代码属于这个方法中的一个嵌套for循环:
//Removes only a single instance of the specified item.
//If the item doesnt exist in the bag, it returns false
public boolean remove(Object item) {
for (int i = 0; i < numOfItem; i++) {
if (stuff[i].equals(item)) {
for (int j = i; j < numOfItem - 1; j++)
stuff[j] = stuff[j + 1];
stuff[numOfItem - 1] = null;
numOfItem--;
return true;
}
}
return false;
}
numOfItem 设置为 0,当初始化一个对象包时,表示包中有 0 个项目,但是在初始化时给该包一个最大容量(用户输入)。如果需要更多信息,请告诉我。提前致谢。
【问题讨论】:
-
有两个地方你做
numOfItem - 1;我会指定导致您混淆的原因(或者如果两者兼而有之)。两者都是此代码不引发错误所必需的。大小为X的数组具有索引0, 1, ..., X-1;尝试访问stuff[numOfItem]将导致错误。
标签: java arrays for-loop logic nested-loops