这是我对接口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;
}
}
这是我对ITurnament的定义
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
是侧1还是面2的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。任何其他选项都意味着您的数据不一致。
编辑
如果由于某种原因 winner 不能为 null 并且始终设置为 NotKnownYet 对象,则可以使用 instanceof 来检查这一点
if winner instanceof NotYetKnown {...
也许您应该为未知玩家提供空白字符串作为名称。然后有一个方法来检索玩家姓名,如果检索的名称是空字符串,则知道玩家未知。我知道这可能不完全是您可能正在寻找的解决方案,但这可能是更简单的方法。