总结ArrayList <integer>中的所有条目

时间:2019-04-14 20:17:38

标签: java arraylist sum

我正在尝试将所有元素添加到ArrayList中,但这似乎是一个挑战。尝试了不同的方法和功能,但没有一个起作用。这是我的代码:

    for (Kids ki : GroupOfKids) {

        try {
            DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
            Date date = new Date();
            String currentDate= dateFormat.format(date);
            Date datum;
            datum = dateFormat.parse(currentDate);


            Date bornDate;
            bornDate= ki.getbornDate();

            int days = daysBetween(bornDate, datum);               
            //code above works fine..from here it's getting confusing

            List<Integer> allKids;
            allKids= new ArrayList<>();
            allKids.add(days);

            int total;
        total = allKids.stream().mapToInt(Integer::intValue).sum();
    System.out.print(total);


        } catch (Exception e) {
            e.printStackTrace();
        }

    }

我正在计算几天中的“孩子”年龄。我得到一个int并将结果放在ArrayList中。我无法得到一个结果。我或者每个孩子一个人都知道他/她多大,或者如果堆叠了2个,我都会得到两个结果。

示例:

孩子1出生1234天

孩子2出生3422天

结果:1​​2343422

我希望1234 + 3422 = 4656。

如果条目更多,则所有条目的总和。

有人可以告诉我我在哪里犯错吗?

2 个答案:

答案 0 :(得分:1)

我看到的第一件事是使用旧的java.util.Date而不是新的java.time.LocalDate;然后使用Period类来确定天数(如果您发布了daysBetween,则可能已经修改了它)。喜欢,

private static int getDaysOld(Date d) {
    return Period.between(d.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(), 
            LocalDate.now()).getDays();
}

然后应使用您的信息流将每个Kids映射到其年龄和总和;喜欢

int total = allKids.stream().mapToInt(k -> getDaysOld(k.getbornDate())).sum();

答案 1 :(得分:0)

假设您在错误的位置进行求和。

您应该在循环之前定义和初始化列表,并在循环结束后进行求和。

List<Integer> allKids;
allKids = new ArrayList<>();

for( ... ) {
    .
    .
    .
    allKids.add(days);
    .
    .
    .
}

int total;
total = allKids.stream().mapToInt(Integer::intValue).sum();
System.out.print(total);