该方法应平均六个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;
}
答案 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;
}