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%
id
is van het primitieve type int
en 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 int
te gebruiken alsof het een Object
is, 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 int
retourneert, 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
, char
en double
en 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()