你能在 java 中将布尔返回值添加到局部整数变量中吗?



我对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; 
}

最新更新