Java中的“int不能被解除引用”

时间:2013-10-01 06:08:24

标签: java int bluej

我是Java的新手,我正在使用BlueJ。我在尝试编译时不断得到“Int not be dereferenced”错误,我不确定问题是什么。错误特别发生在我底部的if语句中,其中“equals”是一个错误,“int不能被解除引用”。希望得到一些帮助,因为我不知道该怎么做。提前谢谢!

public class Catalog {
    private Item[] list;
    private int size;

    // Construct an empty catalog with the specified capacity.
    public Catalog(int max) {
        list = new Item[max];
        size = 0;
    }

    // Insert a new item into the catalog.
    // Throw a CatalogFull exception if the catalog is full.
    public void insert(Item obj) throws CatalogFull {
        if (list.length == size) {
            throw new CatalogFull();
        }
        list[size] = obj;
        ++size;
    }

    // Search the catalog for the item whose item number
    // is the parameter id.  Return the matching object 
    // if the search succeeds.  Throw an ItemNotFound
    // exception if the search fails.
    public Item find(int id) throws ItemNotFound {
        for (int pos = 0; pos < size; ++pos){
            if (id.equals(list[pos].getItemNumber())){ //Getting error on "equals"
                return list[pos];
            }
            else {
                throw new ItemNotFound();
            }
        }
    }
}

6 个答案:

答案 0 :(得分:18)

id是原始类型int而不是Object。你不能像在这里那样调用基元上的方法:

id.equals

尝试替换它:

        if (id.equals(list[pos].getItemNumber())){ //Getting error on "equals"

        if (id == list[pos].getItemNumber()){ //Getting error on "equals"

答案 1 :(得分:4)

基本上,您尝试使用int,就像它是Object一样,它不是(嗯......它很复杂)

id.equals(list[pos].getItemNumber())

应该......

id == list[pos].getItemNumber()

答案 2 :(得分:0)

假设getItemNumber()返回int,请替换

if (id.equals(list[pos].getItemNumber()))

if (id == list[pos].getItemNumber())

答案 3 :(得分:0)

更改

id.equals(list[pos].getItemNumber())

id == list[pos].getItemNumber()

有关详细信息,您应该了解基本类型之间的区别,例如intchardouble以及引用类型。

答案 4 :(得分:0)

由于方法是int数据类型,因此应使用“ ==”而不是equals()

尝试替换此     如果(id.equals(list [pos] .getItemNumber()))

使用

if (id.equals==list[pos].getItemNumber())

它将纠正错误。

答案 5 :(得分:-1)

尝试

id == list[pos].getItemNumber()

而不是

id.equals(list[pos].getItemNumber()