问题描述
基本上每当我在我的 java IDE (Eclipse) 中按下 Run 时它都会输出:
Exception in thread "main" java.lang.Arrayindexoutofboundsexception: Index 36 out of bounds for length 36
at javax.media.j3d.GeometryArrayRetained.setCoordinate(GeometryArrayRetained.java:3634)
at javax.media.j3d.GeometryArray.setCoordinate(GeometryArray.java:1336)
at Main.Shapes.Square.Make(Square.java:38)
at Main.Second.<init>(Second.java:24)
at Main.Main.main(Main.java:7)
它指出的类叫做 Square 这是它包含的内容:
package Main.Shapes;
import javax.media.j3d.Node;
import javax.media.j3d.QuadArray;
import javax.media.j3d.Shape3D;
import javax.vecmath.Point3f;
public class Square {
Node shape;
public Square() {
}
public Node Make(float Size) {
QuadArray polygon1 = new QuadArray (12,QuadArray.COORDINATES);
//Front
polygon1.setCoordinate(0,new Point3f (0f,0f,0f));
polygon1.setCoordinate(1,new Point3f (Size,0f));
polygon1.setCoordinate(2,Size,0f));
polygon1.setCoordinate(3,0f));
//Back
polygon1.setCoordinate(4,-Size));
polygon1.setCoordinate(5,-Size));
polygon1.setCoordinate(6,-Size));
polygon1.setCoordinate(7,-Size));
//Right
polygon1.setCoordinate(8,0f));
polygon1.setCoordinate(9,0f));
polygon1.setCoordinate(10,new Point3f(Size,-Size));
polygon1.setCoordinate(11,-Size));
//left
polygon1.setCoordinate(11,0f));
polygon1.setCoordinate(12,0f));
polygon1.setCoordinate(13,new Point3f(0f,-Size));
polygon1.setCoordinate(14,-Size));
shape = new Shape3D(polygon1);
return shape;
}
}
它指出的行是:
polygon1.setCoordinate(12,-Size));
删除后程序运行良好,但我无法删除它们,因为它们用于创建立方体的面。
有人有什么想法吗?
解决方法
那是因为几乎所有编程语言都从 0 开始计数。所以最后一个索引将是 Size-1。
,感谢@TimHunter 对帖子的评论,问题已得到解决