下面的循环似乎停止了,然后重新启动。它不在另一个循环中。第一个Log调用打印36,因此外部for循环应该运行36次。循环内部的Log调用,用于打印循环运行的次数,打印“0”直到“4”,这意味着循环只运行了5次。是否有任何理由让这个过程重新开始,以便第一个Log调用再次触发,并且循环再次仅运行5次?根据我的Logcat输出,这会发生两次。
ArrayList<RunData_L> rdUP = t.getMyPositiveRunData();
ArrayList<RunData_L> rdDOWN = t.getMyNegativeRunData();
Log.d("rdUP size", rdUP.get(0).getMyMeasurementData().size() + "");
for (int i = 0; i < rdUP.get(i).getMyMeasurementData().size(); i++) {
Log.d("i", i + "");
ArrayList<BigDecimal> tempUP = new ArrayList<BigDecimal>(), tempDOWN = new ArrayList<BigDecimal>();
for(int j = 0; j < rdUP.size(); j++) {
tempUP.add(rdUP.get(j).getMyMeasurementData().get(i));
tempDOWN.add(rdDOWN.get(j).getMyMeasurementData().get(i));
}
pdUP.add(tempUP);
pdDOWN.add(tempDOWN);
}
答案 0 :(得分:0)
我怀疑根据我的评论,在内循环中使用rdUP.get(j)
会导致问题。
首先测试外环中rdUP.get(i).getMyMeasurementData()
的大小作为循环的边界条件,因此 i 从0运行到rdUP.get(i).getMyMeasurementData()
的大小。
然后你的内部循环说明遍历 rdUP 的每个元素,并从rdUP.get(j).getMyMeasurementData()
获取 i 值。你怎么知道 j rdUP 有足够的元素来满足你的get(i)
?