"int cannot be dereferenced" in Java
Asked Answered
E

8

38

I'm fairly new to Java and I'm using BlueJ. I keep getting this "Int cannot be dereferenced" error when trying to compile and I'm not sure what the problem is. The error is specifically happening in my if statement at the bottom, where it says "equals" is an error and "int cannot be dereferenced." Hope to get some assistance as I have no idea what to do. Thank you in advance!

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();
            }
        }
    }
}
Exterior answered 1/10, 2013 at 6:8 Comment(1)
You're trying to using a int where an Integer, Number or Object is expected...int does not have any methodsTrine
F
32

id is of primitive type int and not an Object. You cannot call methods on a primitive as you are doing here :

id.equals

Try replacing this:

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

with

        if (id == list[pos].getItemNumber()){ //Getting error on "equals"
Fielding answered 1/10, 2013 at 6:10 Comment(2)
What can I do if I need to use Integer.compareTo?Nephograph
@RoyCohen java - compareTo with primitives -> Integer / int - Stack OverflowPhilosophize
T
6

Basically, you're trying to use int as if it was an Object, which it isn't (well...it's complicated)

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

Should be...

id == list[pos].getItemNumber()
Trine answered 1/10, 2013 at 6:10 Comment(4)
One doubt: == compares reference for objects and compares values for primitives, right? Please correct if I am wrong.Phytopathology
Yes. Primitives are special.Trine
Actually studying interface I received this error and googling brought me to this answer. Kindly look if you can: error:int cannot be dereferenced System.out.println("A = " + A.AB); The class in which SOP is called implements one interface C and A is super interface of C. int AB is defined in both interface. Error occurs at A.AB.Phytopathology
int AB can't be declared in any interface, it could only possibly be declared within a class...Trine
D
1

Dereferencing is the process of accessing the value referred to by a reference . Since, int is already a value (not a reference), it can not be dereferenced. so u need to replace your code (.) to(==).

Deuno answered 21/2, 2022 at 5:20 Comment(0)
R
0

Assuming getItemNumber() returns an int, replace

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

with

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

Raving answered 1/10, 2013 at 6:10 Comment(0)
B
0

Change

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

to

id == list[pos].getItemNumber()

For more details, you should learn the difference between the primitive types like int, char, and double and reference types.

Blamed answered 1/10, 2013 at 6:11 Comment(0)
G
0

As your methods an int datatype, you should use "==" instead of equals()

try replacing this if (id.equals(list[pos].getItemNumber()))

with

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

it will fix the error .

Gandzha answered 23/6, 2018 at 14:59 Comment(0)
G
0

I think you are getting this error in the initialization of the Integer somewhere

Graeco answered 29/1, 2023 at 6:18 Comment(1)
As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.Commissioner
R
-1

try

id == list[pos].getItemNumber()

instead of

id.equals(list[pos].getItemNumber()
Royroyal answered 1/10, 2013 at 6:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.