2013-04-06 86 views
0

我是新來的java.And,所以我正在練習一些問題。但我絆倒了這一點。我知道我非常接近正確的答案,我想把其他條件,如果它少它會打破。 嘗試插入這裏和那裏,但它不能工作。打印平均數

編寫一個名爲printAverage的方法,該方法接受控制檯的掃描儀作爲參數並重復提示用戶輸入數字。一旦輸入小於零的任何數字,將顯示輸入的所有非負數的平均值。以平均值顯示平均值,並且不要四捨五入。例如,你的方法的調用可能是這樣的:

Scanner console = new Scanner(System.in); 
printAverage(console); 
The following is one example log of execution for your method: 

Type a number: 7 
Type a number: 4 
Type a number: 16 
Type a number: -4 
Average was 9.0 
If the first number typed is negative, do not print an average. 

我嘗試:

public static void printAverage(Scanner console){ 

    int num=0; 
    double sum=0; 
    double avg=0; 
    int counter=0; 
    while(num>=0){ 
    System.out.print("Type a number: "); 
    num=console.nextInt(); 

     if(num>0){ 
    sum+=num; 
    counter++; 
    avg=sum/counter; 
     } 


    } 
    System.out.println("Average was " + avg); 


} 

Sorry.The問題不是clear.For例如,當我在0 0 1 1類型 - 2作爲numbers.I我應該得到

類型的數:0 類型的數:0 類型的數:1種 類型的數:1種 類型的數:-2 平均爲0.5

但我正在逐漸

類型的數:0 類型的數:0 類型的數:1種 類型的數:1種 類型的數:-2 平均爲1.0

+4

問題是什麼? – NPE 2013-04-06 16:04:58

+0

嘗試輸入負數。但它只是不會停下來,並斷開循環 – user2179615 2013-04-06 16:06:30

回答

0

試試這個:

do { 
    System.out.print("Type a number: "); 
    num=console.nextInt(); 
    if (num >= 0) { 
     sum+=num; 
     counter++; 
    } 
} while (num >= 0); 
if (counter > 0) { 
    avg = sum/counter; 
    System.out.println("Average was " + avg); 
} 
+0

你怎麼知道先使用while循環?我總是困惑哪一個使用 – user2179615 2013-04-06 16:17:45

+0

「while」和「do while」之間的主要區別是什麼?是'做什麼'將被執行至少一次。 – niculare 2013-04-06 16:21:32

0

我想到把一個else條件的,如果它小於0.it 會中斷。試圖插入這裏和那裏,但它不能工作。

如果你把else與否並不重要,因爲while(),被照顧突破了計算

,也因爲else部分是最後陳述中環

0

要禁止印刷,如果第一個數字爲負,只需要加一個ifSystem.out.println()各地:

if (counter > 0) { 
    System.out.println("Average was " + avg); 
} 

此外,現有的if中存在一個錯誤,它應該是

  if(num>=0){ 
+0

爲什麼你在這裏使用櫃檯?從我的理解,不應該是num? – user2179615 2013-04-06 16:15:25

+0

測試它。它不工作0 0 1 1 -2 – user2179615 2013-04-06 16:16:28

+0

@ user2179615:你忽略零。將if(num> 0)'更改爲'if(num> = 0)'。 – NPE 2013-04-06 16:21:01