将数值从一种方法返回到另一种方法
/* 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()方法调用或者不是有点困惑?
我明白我当前的代码是不正确的赢家
在正确的方向推任何/提示,将不胜感激!谢谢!
你想要做的就是在你的获胜者方法中找到所有获胜分数的选手对象。
- 要做到这一点,您需要首先通过致电 您的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())
}
谢谢!为了清楚起见,这将在玩家列表中循环播放,并将totalScore与winningScore方法进行比较,然后将获胜者名称添加到ArrayList
要返回一个空列表,你只需要调用返回结果? – copernicon1543
感谢您的评论。现在它将玩家名称(通过玩家对象中的getName()方法)添加到结果列表中。通常我会建议返回一个ArrayList
那么它看起来像你应该调用'winningScore()'从'赢家()'方法入手...如'int scoreToMatch = winningScore();'。然后循环所有球员,看看哪些球员*得分*。 –
@Jon Skeet谢谢! – copernicon1543