2012-07-31 39 views
0

平均這是我的代碼考慮用戶輸入數字

import java.util.*; 
import java.io.*; 

public class eCheck10A 
{ 
public static void main(String[] args) 
{ 
    PrintStream out = System.out; 
    Scanner in = new Scanner(System.in); 

    out.print("Enter your integers"); 
    out.println("Negative = sentinel"); 

    List<Integer> aList = new ArrayList<Integer>(); 



    for (int n1 = in.nextInt(); n1 > 0; n1 = in.nextInt()) 
    { 
      if(n1 < 0) 
      { 
      break; 
      } 
    } 


} 
} 

,如果我要採取一切,我爲N1輸入數字和平均出來,我怎麼指的是所有這些數字?我將把它們放在IF聲明中,因此如果輸入負數,程序將停止併發布其平均值。

+3

這是功課嗎? – Bernard 2012-07-31 02:10:51

+1

如果你知道平均值是多少,它是所有「項目」的總和除以這些「項目」的數量。所以......我想你需要的第一件事是所有'n1's的總和,並保持它們中有多少有 – 2012-07-31 02:12:29

回答

2

這是你需要完成這個任務的僞代碼(僞代碼,因爲它看起來像家庭作業/課堂作業可疑,如果你自己堅持實施,你會成爲一個更好的開發者)。

由於您不需要自己的數字來計算出平均值,因此存儲它們沒有意義。平均數被定義爲所有數字除以他們的數量的總和,所以這就是您需要記住的一切。像這樣的東西應該足夠了:

total = 0 
count = 0 
n1 = get_next_number() 
while n1 >= 0: 
    total = total + n1 
    count = count + 1 
    n1 = get_next_number() 
if count == 0: 
    print "No numbers were entered. 
else: 
    print "Average is ", (total/count) 

幾個其他點的我會提到。現在,您的for聲明將在第一個非正數(<= 0)處退出,使if成爲多餘。

此外,你可能希望被包括在平均任何零:中{1,2,3} = 2平均是不一樣的,平均的{1,2,3,0,0,0} = 1

您可以在for語句本身的東西像這樣做:

for (int n1 = in.nextInt(); n1 >= 0; n1 = in.nextInt()) 

,然後你不需要if/break位內循環可言,類似我提供的僞代碼。

+0

一個問題的計數,「而n1 = get_next_number():」,我們不能這是否導致等號需要一個布爾值 – Shawn 2012-07-31 02:27:30

+0

它是僞代碼,@ user1519192,它可以表示任何你想要的:-)然而,我會澄清它使它更接近Java。無論如何,你可以按照這個答案的後半部分繼續使用'for'變體。 – paxdiablo 2012-07-31 02:30:42

+0

但這不是正確的壽命,它輸出用戶輸入的最後兩個數字。例如,如果您輸入{4,5,3},它會輸出4.加上當我輸入一個負數時,我希望程序停止要求我輸入另一個數字 – Shawn 2012-07-31 03:39:44

0

您需要做什麼的概要:創建一個變量總和以合計所有值並創建另一個稱爲count的變量,它將用於存儲列表中非負數的數量aList。然後用總數除以計數來找到平均值。

0

另一種方法運行平均值是:
new_average = old_average +(NEW_NUMBER - old_average)/數
如果你打的最大的變量類型,你會喜歡這個公式。