让我们说numberString = {1,1,5,6,8}
和numberString
。 numberTracker
中的每个数字都有自己的图块。
我尝试将示例1,5设置为相同的图块颜色,因为它等于tileIterator
中的15,而numberString
包含与java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
相同的长度。代码可以正常工作完美而且做的是做什么。但是我得到了ListIterator < String > nmbTracker = numberTracker.listIterator();
ListIterator < Tile > tileIterator = tiles.listIterator();
Tile t;
int x = 0;
int y = 0;
while (nmbTracker.hasNext()) {
if (numberTracker.get(x).equals(numberString.get(y))) {
t = tileIterator.next();
t.setColor(tilePanel2.changeColour());
if (numberTracker.size() - 1 != x) {
x++;
}
if (numberString.size() - 1 != y) {
y++;
}
} else {
x++;
t = tileIterator.next();
t.setColor(tilePanel2.changeColour());
Color color = t.getColor();
t = tileIterator.next();
t.setColor(color);
y++;
y++;
}
repaint();
}
var db = window.openDatabase('dbtest', '1.0', 'my db test', 1*1024*1024);
var lines = rawTable.split('\n'); //text from an ".sql" file
for(var i = 0; i < lines.length; i++){
var sql=lines[i]; //this doesn't work (why?)
//var sql='DROP TABLE IF EXISTS `Hijos`;'; //and this works (why?)
if(lines[i])
{
console.log(sql);
db.transaction(function (t) {
t.executeSql(sql,[],
function(tx,results){console.log("Success");},
function(tx,error){console.log("Failure");});
});
}
} //for
答案 0 :(得分:1)
好。当您尝试访问其中包含4个元素的列表中的索引5时会发生这种情况。您正在使用迭代器的hasNext()
来查看是否有可用的next
值,但您切换到使用get(x)
来访问列表值。 选择一个。
如果您想坚持get(x)
,请删除hasNext()
并将其替换为while(x<4 && y<5)
,以便列表访问不会超出范围。
如果您想要iterator
,而不是使用get(x)
,请使用迭代器的next()
方法。
至少在这种情况下,互换使用并不好。
答案 1 :(得分:0)
我认为这是吸烟枪:
y++;
y++;
下次,你将比你正在检查的列表多一个。