"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()