2014-10-06 140 views
0

我有一个程序正在创建两个“多米诺骨牌”,随机生成的整数end1end2[end1 | end2]是“多米诺骨牌”的输出。我正在尝试编写一个方法来检查两个Domino是否相同。我想要这个方法equals()来比较这个Domino和作为参数传递的Domino。例如[4|2]将等于[2|4]。我不确定如何比较在不同类中创建的两个对象中的整数。如果不清楚,我很抱歉,我很乐意回答任何问题以提供帮助。非常感谢!如何比较两个独立对象中的两对整数?

到目前为止,我有

public boolean equals(Domino d) { 
    return (this.end1 && this.end2 == Domino.end1 && Domino.end2 ? true : false); 
} 

显然,这是非常错误的语法,但在概念上,这是我所期待的。

回答

1

您必须将一个Domino的第一端与另一端的第一端进行比较,并将第一端的第一端与另一端的第一端进行比较。如果它们不匹配,则将一个端点与另一端点的第一个端点进行比较,反之亦然。

public boolean equals(Domino d) { 
    if (this.end1 == d.end1 && this.end2 == d.end2) 
     return true; 
    if (this.end2 == d.end1 && this.end1 == d.end2) 
     return true; 
    return false; 
} 
0

稍微简单一些,更易于阅读:

public boolean equals(Domino d) { 
    if ((this.end1 == d.end1 && this.end2 == d.end2) || 
     (this.end2 == d.end1 && this.end1 == d.end2)) 
    { 
    return true; 
    } 
    else 
    { 
    return false; 
    } 
} 

只要想想你想要做的英文是什么:

IF

这END1和Domino的END1是相同 AND 这个end2和Domino的end2是一样的

OR

这END2和Domino的END1是相同的 和 这END1和Domino的END2是相同的

返回true

ELSE

返回false

这通常会让您更​​容易思考如何设置条件

+1

'Domino.end1'不会被编译,因为'end1'很可能不是一个静态成员(否则这个方法没有意义)。 – Eran 2014-10-06 03:53:02

+0

@Eran我在你的评论之前就注意到它,并且只是修复了。你介意去除-1吗? – DallaRosa 2014-10-06 03:54:59

+0

@Eran谢谢你! – DallaRosa 2014-10-06 03:56:45