【发布时间】:2013-09-22 17:06:54
【问题描述】:
该方法应平均六个正整数。负数或零整数不应包含在平均值中。如果所有数字都无效,则返回 -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;
}
【问题讨论】:
-
1.阅读此docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html。 2. 逻辑比较是'=',而不是'=='。 3. 负数应该被忽略,而不是假设为 0。请不要除以 0。 4. 使用数组而不是 6 个数字。
-
试试这个:
public float averageSix( int a, int b, int c, int d, int e, int f ) { int g = 6; if( a < 0 ) { g--; } if( b < 0 ) { g--; } if( c < 0 ) { g--; } if( d < 0 ) { g--; } if( e < 0 ) { g--; } if( f < 0 ) { g--; } if(g == 0 ) return -1; float aver = ( ( a + b + c + d + e + f ) / g ); if( aver = 0 ) { aver = -1; } return aver; } -
(大卫伸手去拿他的水晶球)-我看到你的未来会被零错误除法。
标签: java methods integer average