This question already has answers here:
What causes a java.lang.ArrayIndexOutOfBoundsException and how do I prevent it?
(26个答案)
2年前关闭。
我正在尝试制作蛇游戏。我快完成了。问题是,有时当蛇吃掉敌人的物体时,会 pop 此错误--->
er.java:814)
这是敌人的位置单元--->
这是随机数--->
现在我通过一个for循环使用它们来绘制敌人,在其中定义敌人的位置->
我希望这些信息足够了。提前致谢! :)
和
(26个答案)
2年前关闭。
我正在尝试制作蛇游戏。我快完成了。问题是,有时当蛇吃掉敌人的物体时,会 pop 此错误--->
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 33
er.java:814)
这是敌人的位置单元--->
private int[] enemyYpos = {25,50,75,100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,525,550,575,600,625,650,675,700,725,750,775,800,825,850};
private int[] enemyXpos = {100,125,150,175,200,225,250,275,300,325,350,375,400,425,450,475,500,525,550,575,600,625};
这是随机数--->
private int xpos = r.nextInt(34);
private int ypos = r.nextInt(20);
现在我通过一个for循环使用它们来绘制敌人,在其中定义敌人的位置->
enemy = new ImageIcon("E:\\Netbeans\\old files\\Game\\src\\game\\bug.png");
if((enemyXpos[xpos] == snakeXlength[0] && enemyYpos[ypos] == snakeYlength[0])){
lengthsnake++;
xpos = r.nextInt(34);
ypos = r.nextInt(20);
}
enemy.paintIcon(this, g, enemyXpos[xpos], enemyYpos[ypos]); //The Exception error shows that the mistake is in this line
我希望这些信息足够了。提前致谢! :)
最佳答案
我认为您交换了x
元素的数量和y
元素的数量。最简单的修复。更改生成器以使用数组的长度而不是幻数。
private int xpos = r.nextInt(enemyXpos.length);
private int ypos = r.nextInt(enemyYpos.length);
和
xpos = r.nextInt(enemyXpos.length);
ypos = r.nextInt(enemyYpos.length);
07-26 07:08