对象比较方法不会返回预期的内容

时间:2016-01-08 19:36:18

标签: java

我有两个简单的类,CardCardTesterCard中的一种方法检查两张卡是否相等。

但是,当使用matches()中的方法CardTester时,它会返回false,它应该返回true

public class Card {
  private String rank;
  private String suit;
  private int val;

  public Card(String cardrank, String cardsuit, int cardval) {
    rank = cardrank;
    suit = cardsuit;
    val = cardval
  }

  public boolean matches(Card a) {
    if (this.val == a.val && this.suit == a.suit && this.val == a.val)    {
      return true;
    } 
    else {
      return false;
    }
  } 

在另一个类中调用该方法:

public static void main(String[] args){
  Card c2 = new Card("king", "clubs", 10);
  Card c3 = new Card("king", "clubs", 10);

  if (c2.equals(c3)) {
    System.out.println("Cards are equal");
  } 
  else {
    System.out.println("Cards aren't equal");
  }

输出最终为"卡片不等于"什么时候它应该是"卡是平等的#34;。

1 个答案:

答案 0 :(得分:2)

必须覆盖equals()课程中的Card方法并删除matches() (请注意您未使用{{} 1}}而不是equals()方法中的matches()

可能的实施:

main