好吧,所以我在设置之前得到了我的for循环......
for(int i=0; i<inventory.size(); i++){
g.drawImage(
inventory.get(i).getImage(),
Game.WIDTH - inventory.get(i).getImage().getWidth() - 2,
(Game.HEIGHT / 2 - hud.getSideHeight() / 2) + (i*4+2) + i*(inventory.get(i).getImage().getWidth()),
inventory.get(i).width,
inventory.get(i).height,
null
);
}
但是现在不运行直到inventory.size(),我希望它一直运行到七,所以我这样做了......
for(int i=0; i<7; i++){
g.drawImage(
inventory.get(i).getImage(),
Game.WIDTH - inventory.get(i).getImage().getWidth() - 2,
(Game.HEIGHT / 2 - hud.getSideHeight() / 2) + (i*4+2) + i*(inventory.get(i).getImage().getWidth()),
inventory.get(i).width,
inventory.get(i).height,
null
);
}
为什么这不起作用?我收到java.lang.IndexOutOfBoundsException错误。谢谢你的帮助!
答案 0 :(得分:1)
如果列表中没有7,会发生什么?
试
for(int i=0; i<inventory.size() && i < 7; i++){
答案 1 :(得分:1)
我认为您的要求是最多循环7次。为此修改for循环:
for(int i=0; i<Math.min(inventory.size(),7); i++){
Math.min()将采用2的最小参数。因此,如果集合小于7,它将循环到集合的大小。如果集合超过7,它将循环到7。
答案 2 :(得分:0)
修改您的代码:
int temp=inventory.size();
if(temp>7){
temp=7;
}
for(int i=0; i<temp; i++){
g.drawImage(
inventory.get(i).getImage(),
Game.WIDTH - inventory.get(i).getImage().getWidth() - 2,
(Game.HEIGHT / 2 - hud.getSideHeight() / 2) + (i*4+2) + i*(inventory.get(i).getImage().getWidth()),
inventory.get(i).width,
inventory.get(i).height,
null
);
}
还检查库存清单的空状况