我对Java编程相对较新,我对以下代码有一个问题。这是一个名为 IntArrayBag 的类的一部分:变量数据是一个数组实例,变量 manyItems 是用于保存数组项数的实例。在 removeMany 方法中,我不明白为什么您可以通过添加 remove(target( 方法来增加计数。由于 remove 返回布尔值,因此每次 remove 方法的计算结果为 true 时,计数都会递增吗?情况很可能是这样,但我在教科书中找不到任何关于它的文档。如有任何澄清,将不胜感激。
**编辑下面列出的删除许多方法是我的教科书提供的答案。问题是创建一种可以从数组中删除多个项目的方法,而 removeMany 是教科书提供的答案。这对我来说似乎不合逻辑,这就是我要求澄清的原因。提前谢谢。
public boolean remove(int target)
{
int index;
index = 0;
while ((index < manyItems) && (target != data[index]))
index++;
if (index == manyItems)
return false;
else {
manyItems--;
data[index] = data[manyItems]; return true; }
}
public int removeMany(int... targets)
{
int count = 0;
for (int target : targets)
count += remove(target);
return count;
}
正如Izruo的评论中所述,转让是非法的。我相信逻辑是每次remove
成功时增加计数。但是,必须先将 remove
方法返回的布尔值更改为int
,以便可以使用它递增count
。你可以看看这篇文章来做到这一点。
例如,这应该有效:
public int removeMany(int... targets)
{
int count = 0;
for (int target : targets){
int removeResult = (remove(target)) ? 1:
count += removeResult;
}
return count;
}