web-dev-qa-db-ja.com

Javaの「intは逆参照できません」

私は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();
            }
        }
    }
}
21
BBladem83

idはプリミティブ型intであり、Objectではありません。ここで行っているように、プリミティブでメソッドを呼び出すことはできません。

id.equals

これを置き換えてみてください:

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

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

基本的に、あなたはintであるかのようにObjectを使用しようとしていますが、そうではありません(まあ...複雑です)

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

あるべき...

id == list[pos].getItemNumber()
5
MadProgrammer

getItemNumber()intを返すと仮定して、置換

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

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

0
John3136

変化する

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

id == list[pos].getItemNumber()

詳細については、intchardoubleなどのプリミティブ型と参照型の違いを学習する必要があります。

0
Code-Apprentice

メソッドはintデータ型なので、equals()の代わりに「==」を使用する必要があります

if(id.equals(list [pos] .getItemNumber()))を置き換えてみてください

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

エラーが修正されます。

0
Ashit