2012-01-07 87 views
1

使用循環我想計算Java中n個數的平均值,當用戶輸入0時循環結束。 這裏是我寫的代碼:java中n個數的平均值

public class start { 
    public static void main(String[] args) { 
     System.out.println("Enter an int value, the program exits if the input is 0"); 
     Scanner input = new Scanner (System.in); 
     int h = 0; 
     while (input.nextInt() == 0){ 
      int inp = input.nextInt(); 
      int j = inp; 
      int i = 0; 
      h = j + i; 
      break; 
     } 

     System.out.println("The total is: "+ h); 
    } 
} 

難道我做任何邏輯上的錯誤?

+0

+1努力! – Venki 2012-01-07 05:14:10

+0

嘗試用實數跟蹤程序。然後嘗試用真實數字運行程序。這聽起來像你沒有做過。 – 2012-01-07 05:15:32

+0

如果您使用調試器來遍歷您的代碼,您將能夠看到每行代碼的作用並理解您的程序。當程序行爲是一種你不期望的方式時,這給你一個暗示,你需要改變以修復它。順便說一句:我會打電話給總變量'total',我會使用'long'類型來避免下溢/溢出。 – 2012-01-07 08:44:28

回答

1

「我在做任何邏輯錯誤?」

是的。這看起來像一個家庭作業問題,所以我不會爲你拼出來,但想想i的價值是什麼,以及h = j + i在這種情況下意味着什麼。

您還需要注意撥打input.nextInt()。當你每次通過循環調用兩次時(這是你在做什麼)會發生什麼?

1

家庭作業,對吧?

在while循環條件下調用input.nextInt()並且填寫int inp意味着每次通過循環的行程都讀取兩個數字(忽略其中一個數字)。您需要找出一種方法,每次迭代只讀取一個數字,並將它用於== 0比較以及inp

此外,你已經做了有h while循環外的正確的事情,但我想你混淆自己與ji內循環。你可能會考慮稍微描述性的名字 - 這會讓你的代碼更容易推理。

0

您需要保留一個計數器,您可以讀取多少個數字,以便可以將總數除以該數字以獲得平均值。

0

編輯while循環:

while(true){ 
    int e=input.nextInt(); 
    if(e==0) break; 
    h+=e; 
    numberOfItems++; 
} 

你原來實行兩次調用nextInt(),它丟棄每隔數(這絕對不是你打算做)的效果。

1
  • 不要命名總和h,而是總和。
  • while-condition有問題
  • 爲什麼使用inp和j和i?
  • 有無條件的休息 - 爲什麼?
  • 你談論的平均水平。你知道平均值是多少?
  • 您的輸出消息不是平均值 - 而是總和。
0

假設您只詢問一次用戶,輸入以及如果數字爲零,您只需顯示平均值。您需要一個在while循環之外聲明的變量,它將繼續添加由用戶輸入的不同數字,以及第二個變量,該變量跟蹤用戶輸入的個案數量並不斷遞增,直到數字不爲零用戶。而當用戶輸入0時,循環會中斷,這裏我們的平均值將被顯示。

import java.util.Scanner; 

public class LoopAverage 
{ 
    public static void main(String[] args0) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter any Integer value : "); 
     int value = -1, sum = 0, count = 0; 
     while((value = scan.nextInt()) != 0) 
     { 
     count++; 
     sum = sum + value; 
     } 
     System.out.println("Average : " + (sum/count)); 
    } 
} 

希望這可以幫助,

問候

0

是,邏輯錯誤的巨量。

  • while循環的條件是錯誤的,你就吃下 你進入,除非這個數字是0,你永遠不會進入所有
  • 我VAR循環中的第一個值沒有目的
  • 你一個迭代後打破
  • 你不計算運行總計
  • 你不增加計的平均股息
  • 你不計算平均
  • 這看起來像你一起扔了一些代碼,併發布它。試圖運行最明顯的錯誤就會發現。

其他需要考慮的因素:

  • 確保由0
  • 如果你做一個整數除法,你可能最終得到一個不正確的 平均檢查鴻溝,因爲這將是圓潤。最佳投或者除數或 股息爲float
  • 變量名應該是有幫助的,養成使用它們
0

的習慣,我建議你參考的「而」循環中的條件:如果條件會議,該計劃將做什麼? (如果你知道一點點VB,那麼...之間有什麼區別,直到......並且......而......)

另外,當你調用scanner.nextInt()時,該計劃是做什麼的?對於每個輸入,你應該怎麼稱呼它?

最後但並非最不重要,什麼時候應該使用「break」或「continue」?

對於基礎知識,如果你在課程中,建議你理解筆記。或者你可以找到一些解釋Java細節的好書。例如用Java思考

享受學習Java。