for循环不使用int

时间:2014-07-03 06:09:31

标签: java

好吧,所以我在设置之前得到了我的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错误。谢谢你的帮助!

3 个答案:

答案 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
    );
}

还检查库存清单的空状况