不计为0的整数的平均值

时间:2015-04-02 20:53:17

标签: java math

我试图找到一组数字的平均值,其值取自JTextfield。我的问题是零与平均值一起计算。如何找到平均值但不包括零。

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));
}

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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)

答案 2 :(得分: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);