2015-02-24 37 views
-1

我无法让代码显示四条平均值中最高的平均值,我似乎只得到最后的平均得分,并且填补了它不是最高的平均值得分了。显示保龄球得分最高的平均值

这里是我的代码:

​​3210

下面是代码的运行示例:

Player 1 

Enter your bowling score: 

300 

Enter your bowling score: 

222 

Enter your bowling score: 

-1 

Average= 261.00 

Player 2 

Enter your bowling score: 

210 

Enter your bowling score: 

211 

Enter your bowling score: 

300 

Enter your bowling score: 

-1 

Average= 240.00 

Player 3 

Enter your bowling score: 

233 

Enter your bowling score: 

-1 

Average= 233.00 

Player 4 
Enter your bowling score: 

112 

Enter your bowling score: 

-1 

Average= 112.00 

Highest average:112.0 // this is not the highest score. 

回答

1
if (avg > highest_average) {   
    highest_average= avg; 

此代码应该是在你的for循环,否则最高平均永远不会被更新。

+0

你的权利它的确如此工作, – 2015-02-24 18:12:24

+0

感谢你的帮助,我是这个新手我的中学老师正在教一些java的选择,但我永远无法理解他的教学方式,他所做的一切都是读取一些PDF文件,所以再次感谢您的帮助。 – 2015-02-24 18:13:25

+0

不客气。网上有很多网站和教程可以帮助你进一步理解。另外,如果您认为我们能够解决您的问题,请确保将我的或Aify的答案标记为已接受。 – 2015-02-24 18:41:26

1

你永远不更新最高平均每个玩家,只为最后的球员。这就是为什么你总是使用最后一个人的平均值。

只需在for循环中移动if语句,它应该可以正常工作。确保在循环之外留下您的打印语句,以便您最后只打印一次最高平均值。

for (int i = 1; i <= players; i++) { 
    System.out.println("Player " + i); 
    do { 
     System.out.println("Enter your bowling score:"); 
     G = keyboard.nextInt(); 
     scores += G; 
     times++; 
    } while ((G != -1)); // -1 is what makes the loop end for the current player, a total of four players will get an average after -1 is inputted 

    scores += +1; 
    times = times - 1; 
    avg = (scores)/(times); 
    System.out.printf("Average= %.2f\n", avg); 
    scores = 0; 
    times = 0; 
    System.out.println(""); 

    if (avg > highest_average) { 
     highest_average = avg; 
    } 
} 
System.out.println("Highest average:" + highest_average); 
+0

是的,我收到了你的提示和@not_a_bot再次感谢您的帮助。 – 2015-02-24 18:16:12