数组内的数组

时间:2014-09-20 04:13:12

标签: java arrays

我正在制作一个程序来获得一条线的中点。但是我遇到了问题。

我需要做的是拥有尽可能多的积分和尺寸。但是我不知道该怎么做

让我告诉你我想做什么。

points[point][x]=1;  points[point][y]=2;  points[point][z]=3;

看看我的目标是什么?这就是我目前所拥有的

public float[][] points={{}};

当我想写信时

        for(int i=0; i<parts.length;i++){
            points[currentPoint][i]=Float.valueOf(parts[i]);
        }

java.lang.ArrayIndexOutOfBoundsException:0

那我怎么能这样做呢?

2 个答案:

答案 0 :(得分:0)

使用此选项创建3x3二维数组并将所有值初始化为0:

public float points[][] = new float[3][3];

这是迭代数组并设置值:

for (int j=0; j<3; j++) {
    for (int i=0; i<3; i++) {
        points[j][i] = 42; //Or whatever
    }
}

答案 1 :(得分:0)

public float[][] points={{}};

这会创建一个空的二维数组。因此,ArrayIndexOutOfBoundsException。 如果你想创建一个数组来容纳6个点和3个维度,那么你必须分配它:

public float[][] points = new float[6][3];

但是,我会重新考虑你的设计。如果你想要更多面向对象的方式,那么你可能希望有一个线路和点的类。例如:

class Line {
    private final Point startPoint;
    private final Point endPoint;

    Line(Point startPoint, Point endPoint) {
        this.startPoint = startPoint;
        this.endPoint = endPoint;

        final int startPointDimensions = startPoint.getDimensions().size();
        final int endPointDimensions = endPoint.getDimensions().size();
        if (startPointDimensions != endPointDimensions) {
            throw new RuntimeException("Points that form a line must have the same dimension! " +
                    "Start point dimension: " + startPointDimensions +
                    "End point dimension: " + endPointDimensions);
        }
    }

    public Point midpoint() {
        // your code goes here
    }
}

class Point {
    private final List<Float> dimensions;

    Point(List<Float> dimension) {
        dimensions = dimension;
    }

    public List<Float> getDimensions() {
        return dimensions;
    }
}

您可以在oracle's documentation中详细了解列表。如果你不知道你想要支持多少维度,或者你想支持不同数量的维度,我更喜欢列表到数组。