如何在Java中编写一个平均六个正整数的方法?

时间:2013-09-18 04:18:01

标签: java methods integer average

该方法应平均六个POSITIVE整数。负数或零的整数不应包含在平均值中。如果所有数字都无效则返回-1。反正有没有缩短这段代码?

public float averageSix( int a, int b, int c, int d, int e, int f ) {
 if( a < 0 ) { a = 0; }
 if( b < 0 ) { b = 0; }
 if( c < 0 ) { c = 0; }
 if( d < 0 ) { d = 0; }
 if( e < 0 ) { e = 0; }
 if( f < 0 ) { f = 0; }
  float aver = ( ( a + b + c + d + e + f ) / ( ( a / a ) + ( b / b ) 
   + ( c / c ) + ( d / d ) + ( e / e ) + ( f / f ) ) );
 if( aver = 0 ) { aver = -1; }
  return aver;
}

2 个答案:

答案 0 :(得分:5)

您可以使用arrays

简化代码

这基本上是你修剪下来使用数组的方法。我的计算只考虑了有效值(即,如果只有3个数字有效,那么我只将总和平均为3),你可能需要改变这个......

public float averageSix(int a, int b, int c, int d, int e, int f) {
    float sum = 0;
    float usedValues = 0;
    int[] values = new int[]{a, b, c, d, e, f};
    for (int value : values) {
        if (value >= 0) {
            usedValues++;
            sum += value;
        }
    }

    float average = -1;
    if (sum > 0) {
        average = sum / usedValues;
    }

    return average;
}

nb-正如Ted Hopp所说,values声明可以缩短为

int[] values = {a, b, c, d, e, f};

任何让我们不得不输入任何东西的东西都会伤害;)

稍高级但仍然有效,你可以使用varargs,它允许你传入任意数量的值(不只是六个)......

public float average(int... values) {
    float sum = 0;
    float usedValues = 0;
    for (int value : values) {
        if (value >= 0) {
            usedValues++;
            sum += value;
        }
    }

    float average = -1;
    if (sum > 0) {
        average = sum / usedValues;
    }

    return average;
}

答案 1 :(得分:4)

public float average(int[] numbers) {
    int sum = 0;
    int count = 0;
    for(int i = 0; i< numbers.length; i++)
      if(numbers[i] > 0) {
          sum += numbers[i];
          count++;
      }

    if(count == 0)
        return -1; // returns -1 if none is greater than 0

    return (float)sum/count;
}