如何使用数据库中的双精度列表计算平均值

时间:2012-10-21 15:06:35

标签: android database list average

我正在尝试使用this post中解释的方法从我的数据库中获得的双打列表中计算平均值,但它不起作用。应用程序崩溃可能是因为溢出。

private double getAverage() {
        Cursor cursor = db.getMarks(subject);
        List<Double> list = new ArrayList<Double>();
        cursor.moveToFirst();
        while(!cursor.isAfterLast()) {
            list.add(cursor.getDouble(cursor.getColumnIndex(DBAdapter.KEY_VALUE)));
        }
        if (list.isEmpty())
            return 0.0;

        long sum = 0;
        int n = list.size();
        for (int i = 0; i < n; i++)
            sum += list.get(i);
        return ((double) sum) / n;
    }

是否有方法可以获得用于计算平均值的工作代码? 提前致谢

1 个答案:

答案 0 :(得分:0)

你得到的例外是什么? 如果它确实溢出,那就试试吧:

private double getAverage() {

    Cursor cursor = db.getMarks(subject);


    int count = cursor.getCount();
    double sum = 0.0;
    if(count == 0){
        cursor.close();
        return sum;
    }

    cursor.moveToFirst();
    while(!cursor.isAfterLast()) {
        sum += cursor.getDouble(cursor.getColumnIndex(DBAdapter.KEY_VALUE));
        cursor.moveToNext();
    }

    cursor.close();
    return sum / count;
}