“int kan niet worden verwijderd” in Java

Ik ben vrij nieuw in Java en ik gebruik BlueJ. Ik krijg steeds de foutmelding “Int kan niet worden verwijderd” wanneer ik probeer te compileren en ik weet niet zeker wat het probleem is. De fout doet zich specifiek voor in mijn if-statement onderaan, waar staat dat “is gelijk aan” een fout is en “int kan niet worden verwijderd”. Ik hoop dat ik wat hulp krijg, want ik heb geen idee wat ik moet doen. Bij voorbaat dank!

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();
            }
        }
    }
}

Antwoord 1, autoriteit 100%

idis van het primitieve type inten geen Object. Je kunt geen methoden aanroepen op een primitief zoals je hier doet:

id.equals

Probeer dit te vervangen:

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

met

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

Antwoord 2, autoriteit 24%

In feite probeer je intte gebruiken alsof het een Objectis, wat het niet is (nou ja…het is ingewikkeld)

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

Zou moeten zijn…

id == list[pos].getItemNumber()

Antwoord 3

Ervan uitgaande dat getItemNumber()een intretourneert, vervangt u

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

met

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


Antwoord 4

Wijzigen

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

naar

id == list[pos].getItemNumber()

Voor meer details moet je het verschil leren tussen de primitieve typen zoals int, charen doubleen referentietypen.

p>


Antwoord 5

Omdat uw methoden een int-gegevenstype zijn, moet u “==” gebruiken in plaats van equals()

probeer dit te vervangen
if (id.equals(list[pos].getItemNumber()))

met

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

het lost de fout op.


Antwoord 6

probeer

id == list[pos].getItemNumber()

in plaats van

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

Other episodes