这是我有一个方法:

 public double getCombinedAprThisMonth() {
    Cursor c = database.rawQuery("SELECT *  FROM debt;", null);
    double totalMonthlyFee = 0;
    double SingleAprRate = 0;
    double[] storeFees;
    int rows = c.getCount();
    storeFees = new double[c.getCount()];

    for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        for (int i = 0; i < rows; i++) {
            String BalColumn = c.getString(c
                    .getColumnIndex("debt_total"));
            String AprColumn = c.getString(c.getColumnIndex("apr"));
            double aprColumn = Double.valueOf(BalColumn);
            double balColumn = Double.valueOf(AprColumn);

            SingleAprRate = (((aprColumn / 100) / 12) * balColumn);
            storeFees[i++] = SingleAprRate;

        }

    }
    for(double i : storeFees) {
        totalMonthlyFee += i;
    }

    c.close();
    return totalMonthlyFee;
}


有三个记录,因此应该发生三个循环。
totalMonthlyFee的返回值为90。但是,数据为8.33、45和45。我试图获取总和(98.33应该是正确的,但我得到90?)。有人看到这里发生了什么吗?

最佳答案

再三考虑,如果我了解您在做什么,我根本就不需要内循环。也许试试这个...

int j = 0;
for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {
        String BalColumn = c.getString(c
                .getColumnIndex("debt_total"));
        String AprColumn = c.getString(c.getColumnIndex("apr"));
        double aprColumn = Double.valueOf(BalColumn);
        double balColumn = Double.valueOf(AprColumn);

        SingleAprRate = (((aprColumn / 100) / 12) * balColumn);
        storeFees[j++] = SingleAprRate;

    }

10-05 21:01
查看更多