showconfirmdialog - "Int no puede ser referenciado" en Java
joptionpane.showconfirmdialog si no (6)
Básicamente, estás tratando de usar int
como si fuera un Object
, pero no lo es (bueno ... es complicado)
id.equals(list[pos].getItemNumber())
Debiera ser...
id == list[pos].getItemNumber()
Soy bastante nuevo en Java y estoy usando BlueJ. Sigo recibiendo este error de "No se puede anular la referencia a Int" al intentar compilar y no estoy seguro de cuál es el problema. El error está ocurriendo específicamente en mi declaración if en la parte inferior, donde dice que "es igual a" es un error y "no se puede hacer referencia a". Espero obtener ayuda, ya que no tengo idea de qué hacer. ¡Gracias de antemano!
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();
}
}
}
}
Cambio
id.equals(list[pos].getItemNumber())
a
id == list[pos].getItemNumber()
Para obtener más detalles, debe aprender la diferencia entre los tipos primitivos como int
, char
, y double
y los tipos de referencia.
Como sus métodos son un tipo de datos int, debe usar "==" en lugar de equals ()
intente reemplazarlo si (id.equals (list [pos] .getItemNumber ()))
con
if (id.equals==list[pos].getItemNumber())
Se solucionará el error.
Suponiendo que getItemNumber()
devuelve un int
, replace
if (id.equals(list[pos].getItemNumber()))
con
if (id == list[pos].getItemNumber())
tratar
id == list[pos].getItemNumber()
en lugar de
id.equals(list[pos].getItemNumber()
id
es de tipo primitivo int
y no un Object
. No puedes llamar a métodos en un primitivo como lo estás haciendo aquí:
id.equals
Intenta reemplazar esto:
if (id.equals(list[pos].getItemNumber())){ //Getting error on "equals"
con
if (id == list[pos].getItemNumber()){ //Getting error on "equals"