Java 中的“int 不能被取消引用”

2022-09-01 06:58:09

我对Java很陌生,我正在使用BlueJ。在尝试编译时,我不断收到此“无法取消引用Int”错误,我不确定问题是什么。该错误具体发生在我底部的if语句中,它说“等于”是一个错误,并且“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();
            }
        }
    }
}

答案 1

id是基元类型,而不是 .你不能像这里那样在基元上调用方法:intObject

id.equals

请尝试替换以下内容:

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

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

答案 2

基本上,您正在尝试使用它,就好像它是一个,但它不是(好吧...这很复杂)intObject

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

应该是...

id == list[pos].getItemNumber()

推荐