我想有一个方法来计算Integer,Double和Float类型的LinkedList的平均值.
问题是sum += i;语句,因为java说没有为Object类型定义+运算符.
我可以进行强制转换,但是如果LinkedList的类型为Float,并且强制转换为Integer,那么我将无法计算正确的均值.
我该怎么办?谢谢.
public double mean (LinkedList<?> l)
{
double sum = 0;
int n = 0;
for (Object i : l)
{
n++;
sum += i;
}
return sum / n;
}
Run Code Online (Sandbox Code Playgroud)
Pét*_*rök 11
您应该将列表限制为Numbers.这是常见的超类Integer,Float,Double和其他数字类型.它没有定义运算符,只有转换方法,例如double,但这对你来说已经足够了:
public double mean (LinkedList<? extends Number> l)
{
double sum = 0;
int n = 0;
for (Number i : l)
{
n++;
sum += i.doubleValue();
}
return sum / n;
}
Run Code Online (Sandbox Code Playgroud)