2014-10-06 104 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