Java ArrayIndexOutofBounds绘制多边形时出现异常错误

Java ArrayIndexOutofBounds绘制多边形时出现异常错误,java,swing,polygon,java-2d,Java,Swing,Polygon,Java 2d,嗨,我在画多边形时遇到了麻烦。首先,当我尝试用addPointint x,int y方法绘制一个多边形,并且一个接一个地给出坐标时,没有问题,多边形可以被完美地绘制出来。但是,如果我将坐标作为数组给出,则编译器会给出一个整数数组,表示x坐标和y坐标。这是您可以看到的工作代码 @Override public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g; Polygon poly = new Polygon()

嗨,我在画多边形时遇到了麻烦。首先,当我尝试用addPointint x,int y方法绘制一个多边形,并且一个接一个地给出坐标时,没有问题,多边形可以被完美地绘制出来。但是,如果我将坐标作为数组给出,则编译器会给出一个整数数组,表示x坐标和y坐标。这是您可以看到的工作代码

@Override
public void paint(Graphics g) {

    Graphics2D g2 = (Graphics2D) g;

    Polygon poly = new Polygon();

    poly.addPoint(150, 150);
    poly.addPoint(250, 100);
    poly.addPoint(325, 125);
    poly.addPoint(375, 225);
    poly.addPoint(450, 250);
    poly.addPoint(275, 375);
    poly.addPoint(100, 300);

    g2.drawPolygon(poly);

}
但是,如果我使用图形类中为多边形定义的xpoints和ypoints数组,它将无法正常工作

@Override
public void paint(Graphics g) {

    Graphics2D g2 = (Graphics2D) g;

    Polygon poly = new Polygon();

    poly.xpoints[0]=150;
    poly.xpoints[1]=250;
    poly.xpoints[2]=325;
    poly.xpoints[3]=375;
    poly.xpoints[4]=450;
    poly.xpoints[5]=275;
    poly.xpoints[6]=100;      

    poly.ypoints[0]=150;
    poly.ypoints[1]=100;
    poly.ypoints[2]=125;
    poly.ypoints[3]=225;
    poly.ypoints[4]=250;
    poly.ypoints[5]=375;
    poly.ypoints[6]=300;

    g2.drawPolygon(poly.xpoints, poly.ypoints, 7);

}
如果您能提供帮助并表示感谢,我将不胜感激。

从您的评论中:


我认为应该是7,因为有7个整数元素 每个阵列

您必须首先初始化数组,然后用元素填充数组

这同样适用于YPoints

如果您正在寻找动态数组,请使用Java集合框架中的一个实现类,如ArrayList

List<Integer> xPoints = new ArrayList<Integer>();
xPoints.add(150);
xPoints.add(250);
...
根据您的评论:


我认为应该是7,因为有7个整数元素 每个阵列

您必须首先初始化数组,然后用元素填充数组

这同样适用于YPoints

如果您正在寻找动态数组,请使用Java集合框架中的一个实现类,如ArrayList

List<Integer> xPoints = new ArrayList<Integer>();
xPoints.add(150);
xPoints.add(250);
...

你知道数组的大小吗?它甚至是草签的吗

快速谷歌发现:


您知道阵列的大小吗?它甚至是草签的吗

快速谷歌发现:


尝试使用预先构建的数组初始化多边形。可以先创建数组,然后将其传递给多边形的构造函数

public Polygon(int[] xpoints, int[] ypoints, int npoints)

尝试使用预先构建的数组初始化多边形。可以先创建数组,然后将其传递给多边形的构造函数

public Polygon(int[] xpoints, int[] ypoints, int npoints)

xpoints和ypoints的数组大小是多少?我认为应该是7,因为每个数组有7个整数元素?请尝试poly.xpoints=new int[7];poly.ypoints=新整数[7]@格菲回答说…你为什么要盖过油漆。。。方法自定义绘制是通过覆盖paintComponent来完成的。。。method.xpoints和ypoints的数组大小是多少?我认为应该是7,因为每个数组有7个整数元素?请尝试poly.xpoints=new int[7];poly.ypoints=新整数[7]@格菲回答说…你为什么要盖过油漆。。。方法自定义绘制是通过覆盖paintComponent来完成的。。。方法。我认为数组是动态定义的,因为即使使用poly.xpoint.lenght,它也不起作用。但您的解决方案是有效的,谢谢。@quartaela数组不是动态的。ArrayList为。@在您的情况下,PremGenerError npoints将不会初始化。不能只设置数组。看多边形源。@PremGenError是的,我知道了,太完美了!我认为数组是动态定义的,因为即使使用poly.xpoint.lenght,它也无法工作。但您的解决方案是有效的,谢谢。@quartaela数组不是动态的。ArrayList为。@在您的情况下,PremGenerError npoints将不会初始化。不能只设置数组。看多边形源。@PremGenError是的,我知道了,太完美了!嗯,我可以用这个方法,它会更可读。谢谢。我可以用这个方法,它会更可读。谢谢