我是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();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jun*_*san 18
id
是原始类型int
而不是Object
.您不能像在这里那样调用基元上的方法:
id.equals
Run Code Online (Sandbox Code Playgroud)
尝试替换这个:
if (id.equals(list[pos].getItemNumber())){ //Getting error on "equals"
Run Code Online (Sandbox Code Playgroud)
同
if (id == list[pos].getItemNumber()){ //Getting error on "equals"
Run Code Online (Sandbox Code Playgroud)
基本上,您尝试使用的int
好像是Object
,而不是(嗯...很复杂)
id.equals(list[pos].getItemNumber())
Run Code Online (Sandbox Code Playgroud)
应该...
id == list[pos].getItemNumber()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
172162 次 |
最近记录: |