【问题标题】:Average Score for games. Either I divide by zero or calculate one too many游戏的平均得分。要么我除以零,要么计算太多
【发布时间】:2014-04-05 23:02:21
【问题描述】:

嘿,我需要一些快速的建议。我想计算游戏的平均分数,并在每一轮更新它,但我不能正确地做到这一点。

    private void updateAverage(GLabel average) {
    average.setLabel(String.valueOf("Avg: " 
         + String.valueOf((int)((AI_SCORE + PLAYER_SCORE) / TOTAL_GAMES))));
    average.setLocation(getWidth() / 2 - average.getWidth() / 2,
         getHeight() - PADDING);
    TOTAL_GAMES++;
}

这是我使用的代码。我也在第一轮之前调用这个方法,把计数器放在屏幕上。如果我在定义时设置TOTAL_GAMES = 0;,我会得到/ by 0 错误。但是,如果我将其设置为1,则平均而言是有缺陷的。我找不到TOTAL_GAMES++;m 的正确位置,我尝试将其放入检测游戏失败的方法中,在更新平均值(如上面的代码和其他代码)之后,但每次计算的平均值都是错误的。

Full code here

【问题讨论】:

  • 第一轮前的平均成绩是多少?
  • @Gabe AI 和玩家分数都是0,这是第一轮所以我猜应该是0
  • 那么这就是你的答案。

标签: java function average


【解决方案1】:

只需检查 TOTAL_GAMES 是否 == 为 0。

private void updateAverage(GLabel average) {
 if(TOTAL_GAMES == 0){
    average.setLabel("0");
    return;
  }
average.setLabel(String.valueOf("Avg: " 
     + String.valueOf((int)((AI_SCORE + PLAYER_SCORE) / TOTAL_GAMES))));
average.setLocation(getWidth() / 2 - average.getWidth() / 2,
     getHeight() - PADDING);
TOTAL_GAMES++;
}

【讨论】:

  • 这太简单了,我什至没有考虑到这一点。我想我应该睡一会儿。
  • @asalas77 有时答案就在你面前。它可以帮助您花一分钟远离键盘并仔细考虑您的问题。无论如何,很乐意提供帮助。
【解决方案2】:

if 语句将适用于上述用户。

看起来您正在将 (AI_SCORE + PLAYER_SCORE)/(TOTAL_GAMES) 转换为 int,这将改变答案。

如果 total_games 是全局的,那应该可以正常工作。不知道为什么它是一个浮点数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-15
    相关资源
    最近更新 更多