查找具有十进制和整数值java的动态arraylist的平均值

时间:2014-11-21 06:36:21

标签: java arraylist arrays

我使用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();
}
}

2 个答案:

答案 0 :(得分:0)

如何找到平均值: 添加Arraylist中的所有元素

除以ArrayList的大小

如何查找中位数: 使用ArrayList上的Collections.sort()对其进行排序

获取ArrayList中间的元素(ArrayList的size / 2)

答案 1 :(得分:0)

使用instanceof运算符代替使用更好的Class.equals()运算符。

instanceofNumber的超级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;