我正在制作一个程序来获得一条线的中点。但是我遇到了问题。
我需要做的是拥有尽可能多的积分和尺寸。但是我不知道该怎么做
让我告诉你我想做什么。
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
那我怎么能这样做呢?
答案 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中详细了解列表。如果你不知道你想要支持多少维度,或者你想支持不同数量的维度,我更喜欢列表到数组。