我试图找到一组数字的平均值,其值取自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));
}
答案 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);