2015-04-02 73 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