访问一维双数组中的(X,Y)坐标,其中一个元素为X,下一个元素为Y?

时间:2016-04-11 03:16:07

标签: java javafx

我有一个存储X和Y坐标的一维双数组。

元素0将是第一个X,元素1将是相应的Y.

元素2将是第二个X,依此类推。

目前这是我的代码,但我想知道是否有另一种方式,因为这种方式给我一些问题。坐标双数组已经填满。

for(int i = 0; i < coordinates.length; i+=2)
{
    double x = coordinates[i];
    double y = coordinates[i + 1]
}

我的教授说他要求我们使用一维数组进行这项任务。如果没有其他方法,我可以解决我的问题,并采用上述方法,但我只是想知道是否有另一种方法这样做。

使用这些坐标我必须画一条折线。 这是我用于绘制折线的代码。

Polyline shape = new Polyline();

for(double coord : coordinates)
{
    shape.getPoints().addAll(coord);
}
shape.setStrokeWidth(3);

return shape;

这是与所有给定的坐标一起发生的事情的图像。 http://i.imgur.com/sjJWmPJ.png

这条额外的线条困扰着我。

-Edit:谢谢大家的帮助。问题是我的双数组大小为500,而我没有全部使用它,因此大多数值为0.我保留了一个跟踪我有多少坐标并根据我的循环条件而不是坐标数组的长度。

不完全确定如何将其标记为已解决。

3 个答案:

答案 0 :(得分:0)

public static void main(String [] args){

    int[] coordinates = new int[10];
    int[] xArray = new int[10];
    int[] yArray = new int[10];

    for(int j = 0; j < coordinates.length; j++){
        coordinates[j] = (int)(Math.random()*100);
        System.out.println(coordinates[j]);
    }
    System.out.println();

    for(int i = 0; i < coordinates.length; i+=2)
    {
        xArray[i] = coordinates[i];
        yArray[i] = coordinates[i + 1];
        System.out.println("x" + Integer.toString(i) + ": " + xArray[i]);
        System.out.println("y" + Integer.toString(i) + ": " + yArray[i]);
    }

}

我很新,所以我不知道我是否会有任何帮助,但问题是,如果还有其他办法,你可以做到。这样就可以使每个坐标在内存中都有一个特定的位置,这与你的for循环不同,它会覆盖x和y。我不知道你的人是如何填补的,所以我只是用随机数填充我的。

答案 1 :(得分:0)

http://www.java2s.com/Tutorials/Java/JavaFX/0080__JavaFX_Polygon_Polyline.htm

令人惊讶的是,该方法只需要双数组

所以你不需要使用循环

    Polyline shape = new Polyline();
    shape.getPoints().addAll(coordinates);
    shape.setStrokeWidth(3);

    return shape;

还尝试打印你的getPoints()值,它是任何.clear方法吗?也许当你初始化对象时,点(0,0)自动添加广告

答案 2 :(得分:0)

看起来额外的线来自点(0,0)。我对Java绘图工具不太熟悉,但似乎(0,0)是&#34;铅笔&#34;的位置初始化。

之前我曾经使用过几次Java绘图工具,但我似乎记得你曾经采用过某种方法来提升铅笔&#34; - 否则,你会到处画线。这可能是导致额外线路的原因吗?你将不得不生活铅笔,去第一点,放下铅笔,并开始绘图来解决问题。