我正在尝试将所有元素添加到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天
结果:12343422
我希望1234 + 3422 = 4656。
如果条目更多,则所有条目的总和。
有人可以告诉我我在哪里犯错吗?
答案 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);