2016-11-05 161 views
0
/* Assume as precondition that the list of players is not empty. 
* Returns the winning score, that is, the lowest total score. 
* @return winning score 
*/ 
public int winningScore() { 
    Player thePlayer = players.get(0); 
    int result = thePlayer.totalScore(); 
    for (int i = 0; i < players.size(); i++){ 
     int p = players.get(i).totalScore(); 
     if (p < result) { 
      result = players.get(i).totalScore(); 
     } 
    } 
    return result; 
} 

/* Returns the list of winners, that is, the names of those players 
* with the lowest total score. 
* The winners' names should be stored in the same order as they occur 
* in the tournament list. 
* If there are no players, return empty list. 
* @return list of winners' names 
*/ 
public ArrayList<String> winners() { 
    ArrayList<String> result = new ArrayList<String>(); 

    for (int i = 0; i < players.size(); i++) 
     if (!players.isEmpty()) 
      return result; 
} 

因为它在注释中声明,所以我试图在winners方法中返回winningScore()结果,以便返回赢家/赢家名称。将数值从一种方法返回到另一种方法

我设法只返回所有的获奖者,但是如果它应该从winningScore()方法调用或者不是有点困惑?

我明白我当前的代码是不正确的赢家

在正确的方向推任何/提示,将不胜感激!谢谢!

+0

那么它看起来像你应该调用'winningScore()'从'赢家()'方法入手...如'int scoreToMatch = winningScore();'。然后循环所有球员,看看哪些球员*得分*。 –

+0

@Jon Skeet谢谢! – copernicon1543

回答

1

你想要做的就是在你的获胜者方法中找到所有获胜分数的选手对象。

  • 要做到这一点,您需要首先通过致电 您的winningScore方法来计算获胜分数。
  • 接下来,您会发现所有玩家对象的totalScore等于以前计算的获胜分数 。你想要返回这些。

然后为获奖者的方法生成的代码应该是这样的:

public ArrayList<String> winners() { 
    ArrayList<String> result = new ArrayList<String>(); 

    int winningScore = winningScore(); 

    for (int i = 0; i < players.size(); i++) 
     if (players.get(i).totalScore() == winningScore) 
      result.add(players.get(i).getName()) 

    return result; 
} 

如果要简化代码,你可以通过循环使用ArrayList迭代器这样的替代for循环,因为你不使用索引变量i

for (Player player : players) { 
    if (player.totalScore() == winningScore) 
     result.add(player.getName()) 
} 
+0

谢谢!为了清楚起见,这将在玩家列表中循环播放,并将totalScore与winningScore方法进行比较,然后将获胜者名称添加到ArrayList result = new ArrayList ()? – copernicon1543

+0

要返回一个空列表,你只需要调用返回结果? – copernicon1543

+0

感谢您的评论。现在它将玩家名称(通过玩家对象中的getName()方法)添加到结果列表中。通常我会建议返回一个ArrayList 而不是一个字符串列表,因为你可以在播放列表中做更多的事情,而不仅仅是使用字符串列表。 – biro

相关问题