Java object equals method not work

java

Solution

In your case:

Right: `if ( x.equals(y) )`

Wrong: `if ( x == y )`

If the `equals` API is not working, then you've overridden it in your `Card` class, and you've implemented it wrong.

If you haven't overridden it, well then do it:

public class Card 
{
    ...
    
    @Override
    public boolean equals(final Object obj)
    {
        if (obj == this)
            return true;
            
        if (obj == null || !(obj instanceof Card)) 
            return false;
        
        Card otherCard = (Card) obj;
        
        if (otherCard.score != this.score)       return false;
        if (otherCard.symbol != this.symbol)     return false;
        if (!otherCard.warna.equals(this.warna)) return false;
        if (!otherCard.type.equals(this.type))   return false;
        if (!otherCard.value.equals(this.value)) return false;
        
        return true;
    }

}

Problem

I have trouble with my code, the equals method is not working, I have try both `==` and `.equals()` but it's not working. This is the code for main method: ``` x= new Card('♠',"number","3",5,Color.BLACK); y= new Card('♠',"number","3",5,Color.BLACK); if(x.equals(y)) System.out.println("True"); else System.out.println("False"); ``` The program is printing "False" in the screen. this is my Card class : ``` package core; import java.awt.Color; public class Card { private char symbol; private String type,value; private int score; private Color warna; public Card(char symbol, String type, String value,int score,Color warna) { this.setSymbol(symbol); this.setValue(value); this.setType(type); this.setScore(score); this.warna = warna; } public char getSymbol() { return symbol; } public void setSymbol(char symbol) { this.symbol = symbol; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } public String getType() { return type; } public void setType(String type) { this.type = type; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } public Color getWarna() { return warna; } public void setWarna(Color warna) { this.warna = warna; } } ``` What should I do?

Original source