2015-04-02 70 views
-1

我試圖找到數字的數組的平均值,其值取自JTextfield。我的問題是零與平均值計算在一起。如何找到平均值但不包含零。整數不爲0的整數的平均值作爲數

int[] numbers = new int[]{Integer.parseInt(math1.getText()),0 }; 

int sum =0; 
if(numbers != 0){ 

    for(int i=0; i < numbers.length ; i++) 
     sum = sum + numbers[i]; 

    //calculate average value 
    int average = sum/numbers.length; 

    totdata2.setText(Integer.toString(average)); 
} 
+0

0的重要性..如果有人給你0/10,你想包括它! – christopher 2015-04-02 20:59:54

+0

使用「if」使您的代碼有條件。 – 2015-04-02 21:07:59

回答

0

不要指望計算平均值時分母其數值爲零的數字:

int tally = 0; 
for (int i = 0; i < numbers.length; i++){ 
    if (numbers[i] != 0){ 
     sum = sum + numbers[i]; 
     tally++; 
    } 
} 
int average = sum/tally; 

我不知道你要完成的任務用下面的語法:

if(numbers != 0) 
+0

非常感謝,這已經解決了問題 – Craig 2015-04-02 21:12:51

0
int[] numbers // numbers is an array. 

不能做if(numbers != 0)

在for循環中,您應該檢查實際整數是否爲零。

int counter=0; // counts not zero elements 
for(int i=0; i < numbers.length ; i++) 

    if(numbers[i]!=0){ 
     sum = sum + numbers[i]; // numbers[i] is an int (a number) 
     counter ++; 

    } 

二:你不應該這樣做: int average = sum/numbers.length;

在上面的代碼,你指望你除以陣列​​原始長度的零。

你應該保持一個不爲零的計數器並且用該計數器除。 檢查上面更新的代碼。

它應該是:

int average = sum/counter; 
+0

當然,這與沒有「if」測試完全相同。 – 2015-04-02 20:58:30

+0

@OliverCharlesworth它甚至無法編譯......我不知道他在說什麼...... – Alboz 2015-04-02 21:02:50

+0

@Alboz感謝您的回覆,但是如果其中一個數字爲零,它會發現平均值。例如3 + 3 + 3 + 0給出的平均值爲2.25而不是3.我的歉意,我不應該離開if在 – Craig 2015-04-02 21:03:50

0

我認爲它會工作

int countOfZero = 0 ; 
for(int i=0; i < numbers.length ; i++) 
{ 
    sum = sum + numbers[i]; 
    if(numbers[i]==0) 
    { 
     countOfZero++; 
    } 
} 
int average = sum/(numbers.length-countOfZero); 
+0

請在發佈答案前確認。 – 2015-04-02 21:19:42

+0

只是我想要禮貌.. http://goo.gl/Z0B4Uf – 2015-04-11 12:17:52