2015-02-24 61 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