3 回答

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
在您的第二個(gè) for 循環(huán)之后,您應(yīng)該有一個(gè) if 保護(hù)來保護(hù)最后一次迭代。這哪里是時(shí)間counter等于的大小List,因?yàn)閮?nèi)部的for循環(huán)的最后一次迭代的加1計(jì)數(shù)器
if(counter < changeOfTableCell.size()){
startCounter=changeOfTableCell.get(counter);
}
或者更確切地說是終止
if(counter >= changeOfTableCell.size()) break;
startCounter=changeOfTableCell.get(counter);

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊
計(jì)數(shù)器變?yōu)?18 并拋出 IndexOutOfBoundsException,因?yàn)樗?code>counter正在跟蹤它已迭代的元素?cái)?shù)量。打印出列表中的最后一個(gè)值后,startCounter
嘗試獲取第 18 個(gè)索引處的元素,該元素不存在(列表為 0 索引)。要修復(fù)它,請執(zhí)行條件語句以檢查是否counter
已經(jīng)在第 18 個(gè)索引處。

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是我想出的解決方案:
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 ");
}
}
}
添加回答
舉報(bào)