"int не может быть разыменован" в Java

Я новичок в 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 имеет примитивный тип int, а не a Object. Вы не можете вызывать методы на примитиве, как вы здесь делаете:

id.equals

Попробуйте заменить это:

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

с

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

Ответ 2

В принципе, вы пытаетесь использовать int, как если бы это был Object, который он не (ну... он сложный)

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

Должно быть...

id == list[pos].getItemNumber()

Ответ 3

Предполагая, что getItemNumber() возвращает int, замените

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

с

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

Ответ 4

Изменить

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

к

id == list[pos].getItemNumber()

Для получения дополнительной информации вы должны узнать разницу между примитивными типами, такими как int, char и double и ссылочные типы.

Ответ 5

попробуйте

id == list[pos].getItemNumber()

вместо

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