高尔夫分数计划?

时间:2011-10-15 05:16:28

标签: java average

所以我正在努力制作一个平均你的高尔夫分数的程序。我编辑了一个标准平均值计算器,使其工作:

import java.util.Scanner;
public class Test {
public static void main(String args[]){
    Scanner input = new Scanner(System.in);
    int total = 0;
    int score;
    int average;
    int counter = 0;

    while (counter >= 0){
    score = input.nextInt();
    total = total + score;
    counter++;
    }
    average= total/10;
    System.out.println("Your average score is "+ average);
}
}

但是当我输入分数时,我可以继续输入无限分数而且从不平均分数。它只是期待着另一个得分。我知道这与这一行有关:

while (counter >= 0){

但我不知道该怎么做才能正常工作。

4 个答案:

答案 0 :(得分:1)

你需要一些方法来摆脱循环。例如,输入-1:

int score = input.nextInt();
if (score < 0) { break; }
total += score;

在计算平均值时,您似乎也有一些错误:

  • 不要总是除以10 - 使用counter
  • 的值
  • 使用浮点运算。如果你需要一个int,你可能想要舍入到最近而不是截断。

例如:

float average = total / (float)counter;

答案 1 :(得分:1)

你永远找不到摆脱循环的方法:

while (counter >= 0){
    score = input.nextInt();
    total = total + score;
    counter++;
}

将循环 20亿 次(不,我不夸张),因为你没有其他方法可以突破。

您可能想要的是将循环条件更改为:

int score = 0;

while (score >= 0){

输入负分数时会出现这种情况。

此外,您最后有一个整数除法。您想要创建浮点数,因此请将声明更改为:

double average;

并将此行更改为:

average = (double)total / 10.;

答案 2 :(得分:0)

您必须指定计数器值,默认值为0,因此while中的条件始终为true,因此您将进入无限循环。

答案 3 :(得分:0)

while (true) {
    score = input.nextInt();
    if (score == 0) {
        break;
    }
    total = total + score;
    counter++;
}

现在,当您输入不可能的分数0时,您的程序将意识到您已完成输入分数。