这是我的接口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.side1TennisPlayerthis.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 {...

08-16 03:53