我有以下方法:
private <E extends Number> double GetAverage(ArrayList<E> al)
{
double total = 0;
Iterator<E> itr = al.iterator();
while(itr.hasNext())
{
total += itr.next();
}
return total;
}
Run Code Online (Sandbox Code Playgroud)
但它没有编译.我得到了
"总不能解决或不是一个领域"
在线
"total + = itr.next();"
我知道Java不知道E的价值,但我希望你理解我的意思,创建一个添加ArrayList的总数(数值)的通用方法的最佳方法是什么.
您的代码如下所示:
itr.next().
total += itr.next();
Run Code Online (Sandbox Code Playgroud)
编译器正在读取的内容如下:
itr.next().total += itr.next();
Run Code Online (Sandbox Code Playgroud)
编译器建议没有名为total可访问的字段Number.你可能意味着没有这条线:
itr.next().
Run Code Online (Sandbox Code Playgroud)
另一方面,我不确定是否Number会自动取消装入double.您可能需要调用Number#doubleValue()的Number实例.
total += itr.next().doubleValue();
Run Code Online (Sandbox Code Playgroud)
您的代码实际上存在语法错误,您的行不完整.您的完整代码应该是:
private <E extends Number> double GetAverage(ArrayList<E> al) {
double total = 0;
Iterator<E> itr = al.iterator();
while (itr.hasNext()) {
E next = itr.next();
total += next.doubleValue();
}
return total;
}
Run Code Online (Sandbox Code Playgroud)
注意:返回'total'而不是undefined retVal
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |