慕標(biāo)琳琳
2023-05-17 14:37:30
我正在嘗試比較來自同一類的兩個(gè)對(duì)象,這些對(duì)象同時(shí)包含 String 和 Int 參數(shù)。這是我的實(shí)驗(yàn)室作業(yè),我嘗試只使用 .equals 方法而不覆蓋它,但沒有用,我對(duì)如何比較兩個(gè)對(duì)象的 String 和 Int 參數(shù)做了更多研究。所以我構(gòu)建了一個(gè)重寫等于,它只適用于 String 參數(shù),因?yàn)槲覝y(cè)試了每個(gè)參數(shù),Int 參數(shù)一直返回為 True,所以我不確定我哪里出錯(cuò)了。更新好的,現(xiàn)在我開始工作了,我試圖弄清楚如果名稱不同或團(tuán)隊(duì)名稱不同則返回 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"); }所以我希望結(jié)果打印出來,如果姓名、球隊(duì)和球衣號(hào)碼相同,則結(jié)果打印為相同的球員,或者如果這三者都不同,則結(jié)果打印為不同的球員,我想。取而代之的是,無論 Int 參數(shù)值如何,它都會(huì)將所有三個(gè)參數(shù)打印為 Same player,當(dāng)我將 Int Parameter 變灰時(shí),它實(shí)際上顯示了 Same 和 Different Players 結(jié)果。
1 回答

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