【发布时间】:2015-12-08 19:50:14
【问题描述】:
在我调用 getDistance(points[i], points[j]) 的行上,我收到错误,要求我将 getDistance 方法参数更改为双精度值而不是数组,尽管我认为我正在将数组传递给该方法由于多维数组的工作方式。
public static void main(String[] args) {
double[][] points = {
{1.0, 2.0, 3.0},
{0.0, 0.0, 2.0},
{1.0, 1.5, 4.0},
{3.0, 2.0, 1.0}
};
for(int i=0; i<points.length; i++){
for(int j=1; j<points[0].length; j++){
getDistance(points[i], points[j]);
}
}
}
public double getDistance(Array points1[], Array points2[]){
double x1 = Array.getDouble(points1, 0);
double x2 = Array.getDouble(points2, 0);
double y1 = Array.getDouble(points1, 1);
double y2 = Array.getDouble(points2, 1);
double z1 = Array.getDouble(points1, 2);
double z2 = Array.getDouble(points2, 2);
double distance = Math.sqrt(Math.pow(x1 - x2, 2) +(Math.pow(y1 - y2, 2) +
(Math.pow(z1 - z2, 2))));
return distance;
}
【问题讨论】:
-
public double getDistance(Array points1[], Array points2[])中的Array是什么? -
什么意思 什么是数组呢?我说我将 2 个数组传递给该方法,这些数组作为 points[i] 和 points[j] 传递,因为 points 是一个多维数组,据我所知,points[i] 应该传入点[0][0 到 2]
-
points[i]的类型不是Array[]。它是double[](即double数组)。 -
您的方法接受名为
Array的某种类型的数组,但您传递的是double数组。 Java 没有可用于存储任何数组的Array类型(即使它有,在这种情况下您也需要传递多维数组)。有java.lang.reflect.Array类型,但它是实用程序类,它允许我们使用反射对数组进行操作,而不是存储数组引用。因此我的问题。稍后可能会有更多以下问题,但要问他们,我想更多地了解您在代码中使用的内容以及您认为它应该起作用的原因。