2016-03-09 111 views
0

我已經被分配了一個任務來創建一個平均計算器,不幸的是,每次平均完成時,我得到的任何一個太多,當我做數字時沒有解決問題 - 或者,平均完全關閉。平均計算器[舍入問題]

import java.util.*; 

public class Mean 
{ 
    public static void main() 
    { 
     Scanner inputLine = new Scanner(System.in); 
     int total = 0, number, counter = 0; 
     double average; 

     System.out.println ("Enter your numbers, press 0 to launch"); 


     while (inputLine.nextInt() != 0) 
     { 
      number = inputLine.nextInt(); 
      if(number >= 1) 
      { 
       total = total + number; 
       counter++; 
      } 
     } 


     average = total/counter-1; 
     System.out.println ("Your Average is : " + average); 

    } 
} 
+0

您正在執行整數運算(其導致的整數)分頻,然後您將該整數擴大到「double」。通過在double上做數學來修復它。例如,'average =((double)total)/ counter;' –

+0

剛剛試過,1,2,3,4,5,6,7,8,9,10,0 = 6仍然很奇怪。 –

回答

4
  1. 您正在閱讀從Scannerint每兩次循環。 while循環讀取一個int以確保它不是0,但循環的主體讀取第二個int並且只計算第二個int

將第一個nextInt調用的結果分配給while循環條件中的變量,並在主體中使用該變量進行計算。

  1. 您正在從平均計算中減去1。這沒有理由。不要這樣做。

  2. 您正在執行Java的整數除法,它將截斷任何小數。將其中一個操作數轉換爲/double以強制執行浮點計算。

while ((number = inputLine.nextInt()) != 0) 
{ 
    if(number >= 1) 
    { 
     total = total + number; 
     counter++; 
    } 
} 
average = (double) total/counter; 

您可能需要添加代碼,其中用戶輸入的任何項目的狀態下,以防止0