2011-10-15 31 views
1

所以我试图制定一个程序,它平均你的高尔夫比分。我编辑的标准平均计算器,使其工作:高尔夫比分计划?

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){ 

但我不知道该怎么办,所以它的工作原理是正确的。

+0

当'counter'不低于或相等更大,你'while'循环才会停止为零,并且您用'counter ++'递增'counter',所以绝不是这种情况。你确定这就是你想要它工作的方式?或者你还希望你的循环结束? – birryree

回答

1

你永远不会找到一个方法来打破循环:

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

将循环2十亿倍(不,我不是夸大其词),因为你没有别的办法。

你可能需要的是改变你的循环条件这一点:

int score = 0; 

while (score >= 0){ 

这将打破进入负得分时。

此外,你在最后有一个整数除法。你想浮点,所以更改声明如下:

double average; 

和改变这一行这样的:

average = (double)total/10.; 
1

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

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

你似乎也有一对夫妇的错误在平均值的计算:

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

例如:

float average = total/(float)counter; 
0

您必须指定计数器的值,默认值是0,所以这段时间的情况总是如此,所以你会无限循环。

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

现在你的程序将实现,当你进入是不可能的分数你完成输入分数0