我使用JSONArray
来保存动态值,值可以是整数或双值,我需要找到JSONArray
中这些值的平均值和中位数,因为我保存了值arraylist
并试图找到平均值,因为列表由整数或双值组成,它显示了Classcast异常。请给我解决方案,找到arraylist值的平均值和中位数(整数或双值)。我试过代码下面但它循环加倍数组大小....
for (Object o : list) {
if (o.getClass().equals(Integer.class)) {
handleint(list);
}
else if (o.getClass().equals(Double.class)) {
handledouble(list);
}
}
for(Object obj: list){
if(obj instanceof Double)
{
sum1 = sum1 + ((Double) obj).doubleValue();
average = sum1 / list.size();
}
else if(obj instanceof Integer)
{
sum1 = sum1 + ((Double) obj).doubleValue();
average = sum1 / list.size();
}
}
答案 0 :(得分:0)
如何找到平均值: 添加Arraylist中的所有元素
除以ArrayList的大小
如何查找中位数: 使用ArrayList上的Collections.sort()对其进行排序
获取ArrayList中间的元素(ArrayList的size / 2)
答案 1 :(得分:0)
使用instanceof
运算符代替使用更好的Class.equals()
运算符。
对instanceof
和Number
的超级Integer
使用单Double
。
以下是示例代码:
double total=0;
int count=0;
for(Object obj:list){
if(obj instanceof Number){
total+=((Number)obj).doubleValue();
count++;
}
}
double average=total/count;