这是我的接口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
是否为{1}}侧面2。但是当谈到未知时,我开始感到困惑。
如果你能在这里解释数据结构和对象那将是很棒的。
谢谢。
此外,TennisPlayer和Unknown的示例如下所示:
TennisPlayer
答案 0 :(得分:1)
游戏有两个玩家,因此如果游戏已经玩过,获胜者必须是side1或side2,如果游戏还没有玩,则必须为null。任何其他选项都意味着您的数据不一致。
修改的
如果由于某种原因,获胜者不能为null并且始终设置为NotKnownYet对象,则可以使用instanceof来检查此
if winner instanceof NotYetKnown {...
答案 1 :(得分:0)
也许你应该给空白字符串作为未知玩家的名字。然后有一个方法来检索玩家名称,如果检索的名称是一个空字符串,你知道该玩家是未知的。我知道这可能不是您可能正在寻找的解决方案,但它可能更容易实现它。