3 回答
![?](http://img1.sycdn.imooc.com/5333a1d100010c2602000200-100-100.jpg)
TA贡献1951条经验 获得超3个赞
在您的第二个 for 循环之后,您应该有一个 if 保护来保护最后一次迭代。这哪里是时间counter等于的大小List,因为内部的for循环的最后一次迭代的加1计数器
if(counter < changeOfTableCell.size()){
startCounter=changeOfTableCell.get(counter);
}
或者更确切地说是终止
if(counter >= changeOfTableCell.size()) break;
startCounter=changeOfTableCell.get(counter);
![?](http://img1.sycdn.imooc.com/54584d6100015f5802200220-100-100.jpg)
TA贡献1803条经验 获得超3个赞
计数器变为 18 并抛出 IndexOutOfBoundsException,因为它counter
正在跟踪它已迭代的元素数量。打印出列表中的最后一个值后,startCounter
尝试获取第 18 个索引处的元素,该元素不存在(列表为 0 索引)。要修复它,请执行条件语句以检查是否counter
已经在第 18 个索引处。
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
TA贡献1859条经验 获得超6个赞
这是我想出的解决方案:
public class CounterTest {
public static void main(String[] args) {
List<Integer> changeOfTableCell = new ArrayList<Integer>();
changeOfTableCell.add(3);
changeOfTableCell.add(3);
changeOfTableCell.add(3);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(10);
changeOfTableCell.add(5);
changeOfTableCell.add(5);
changeOfTableCell.add(5);
changeOfTableCell.add(5);
changeOfTableCell.add(5);
int start=0;
int length=changeOfTableCell.get(0);
for(int a=0; a<changeOfTableCell.size(); a++){
for(int i=start; i<length; i++) {
System.out.println(changeOfTableCell.get(start));
}if(length==changeOfTableCell.size()){
System.out.println("Do something ");break;
}else start=length; length=length+changeOfTableCell.get(start);
System.out.println("Do something ");
}
}
}
添加回答
举报