【问题标题】:Find average of dynamic arraylist with decimal and integer values java查找具有十进制和整数值java的动态arraylist的平均值
【发布时间】:2014-11-21 06:36:21
【问题描述】:

我使用JSONArray 保存动态值,这些值可以是整数或双精度值,我需要在JSONArray 中找到这些值的平均值和中位数,因为我将这些值保存在arraylist 和试图找到平均值,因为列表由整数或双精度值组成,它显示 Classcast 异常。请给我解决方案来查找数组列表值(整数或双精度值)的平均值和中值。我尝试使用下面的代码,但它循环加倍数组大小......

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

【问题讨论】:

  • handleinthandledouble 做什么?分享完整的代码。您使用的是原始类型的列表吗?
  • 是的,我正在使用原始列表,在 handleint 方法中,我添加了列表值并按数组大小潜水了值
  • 我认为您不需要单独的列表来计算平均值,因为您可以在从 JSONArray 保存列表中的值的同时做到这一点。
  • 我试过你的代码,我得到了正确的值..谢谢
  • 您已提出 8 个问题,但没有一个被接受。

标签: java arraylist arrays


【解决方案1】:

如何求平均值: 将 Arraylist 中的所有元素相加

除以 ArrayList 的大小

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

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

【讨论】:

    【解决方案2】:

    使用instanceof 运算符而不是使用Class.equals() 这是更好的方法。

    Number 使用单个instanceof,这是IntegerDouble 的超类。

    这里是示例代码:

    double total=0;
    int count=0;
    
    for(Object obj:list){
        if(obj instanceof Number){
            total+=((Number)obj).doubleValue();
            count++;
        }
    }
    
    double average=total/count;
    

    【讨论】:

    • 我已经尝试过但又没有得到正确的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多