我正在嘗試比較來自同一類的兩個對象,這些對象同時包含 String 和 Int 參數。這是我的實驗室作業,我嘗試只使用 .equals 方法而不覆蓋它,但沒有用,我對如何比較兩個對象的 String 和 Int 參數做了更多研究。所以我構建了一個重寫等于,它只適用于 String 參數,因為我測試了每個參數,Int 參數一直返回為 True,所以我不確定我哪里出錯了。更新好的,現在我開始工作了,我試圖弄清楚如果名稱不同或團隊名稱不同則返回 false。我想過使用 if 和 else 但嵌套 if-else?//This is my equals method to compare the String and Int parameter.public boolean equals(Object o) { Player comp = (Player) o; if (o == this) { if (comp.team.equals(this.team)) { return true; } else if (comp.jerseyNumber == this.jerseyNumber) { return true; } }else return false; }//And this is the method that calls on Player. player1.readPlayer();//Prompt for and read in information for player 2 player2.readPlayer();//Compare player1 to player 2 and print a message saying//whether they are equal if (player1.equals(player2)) { System.out.println("Same Players"); }else { System.out.println("Different Players"); }所以我希望結果打印出來,如果姓名、球隊和球衣號碼相同,則結果打印為相同的球員,或者如果這三者都不同,則結果打印為不同的球員,我想。取而代之的是,無論 Int 參數值如何,它都會將所有三個參數打印為 Same player,當我將 Int Parameter 變灰時,它實際上顯示了 Same 和 Different Players 結果。
1 回答

蕪湖不蕪
TA貢獻1796條經驗 獲得超7個贊
您在平等檢查中進行了自我比較:
Player comp = (Player) o;
if (comp.team.equals(this.team))
return true;
if (comp.jerseyNumber == ((Player) o).jerseyNumber) <== RIGHT HERE
return true;
我假設你打算:
if (comp.jerseyNumber == this.jerseyNumber)
根據comp變量,我猜你提取了演員表但遺漏了一個,然后在審查時有點緊張。
編輯:我還建議使用快速退出,就像這樣 - 否則,如果球隊相同,但球衣不同,你今天的方式會說他們是同一個人:
Player comp = (Player) o;
if (!comp.team.equals(this.team))
return false;
if (comp.jerseyNumber != this.jerseyNumber)
return false;
return true;
添加回答
舉報
0/150
提交
取消