这是我的接口Icontestant的类定义:
interface IContestant {
}
class TennisPlayer implements IContestant {
String name;
int ranking;
TennisPlayer (String name, Integer ranking){
this.name = name;
this.ranking = ranking;
}
}
class NotYetKnown implements IContestant {
NotYetKnown (){
}
}
这是我对MatchData类的定义:
class MatchData {
IContestant side1;
IContestant side2;
IContestant winner;
IScore score;
MatchData (IContestant side1, IContestant side2, IContestant winner, IScore score){
this.side1 = side1;
this.side2 = side2;
this.winner = winner;
this.score = score;
}
}
这是我对ITournament的定义
interface ITournament {
boolean winnerPlayed ();
}
class InitMatch implements ITournament {
MatchData matchData;
InitMatch (MatchData matchData){
this.matchData = matchData;
}
public boolean winnerPlayed (){
if ((this.matchData.winner == this.matchData.side1)||(this.matchData.winner == this.matchData.side2)){
return true;
}
else
return false;
}
else
return true;
}
}
现在,我需要向
winnerPlayed ()
添加一个条件,以首先检查获胜者是否未知。如果未知,那么我们可以在检查获胜者是side1还是side2之前返回true。但是,我很难纠正这种情况。在这种情况下,我很困惑与
this.matchData.winner
相比该使用什么。我知道this.matchData.side1
是TennisPlayer
,this.matchData.side2
是另一个TennisPlayer
,因此我们正在比较this.matchData.winner
是side1还是side2的TennisPlayer
。但是当涉及到未知时,我开始感到困惑。如果您可以在此处解释数据结构和对象,那将是很好的。
谢谢。
另外,TennisPlayer和Unknown的示例如下所示:
TennisPlayer tennisPlayer1 = new TennisPlayer("Andre Agassi", 7);
TennisPlayer tennisPlayer2 = new TennisPlayer ("Pat", 4);
NotYetKnown unknown = new NotYetKnown();
MatchData matchTennis2 = new MatchData (tennisPlayer1, tennisPlayer2, notYetKnown, tennisScore3 );
InitMatch initTennis1 = new InitMatch (matchTennis1);
最佳答案
一个游戏有两个玩家,因此如果已经玩过游戏,则获胜者必须为side1或side2;如果尚未进行游戏,则获胜者为null。任何其他选择都意味着您的数据不一致。
编辑
如果由于某些原因获胜者不能为null且始终设置为NotKnownYet对象,则可以使用instanceof来检查此内容
if winner instanceof NotYetKnown {...