在我调用getDistance(points [i],points [j])的行上,我遇到错误,要求我将getDistance方法参数更改为double而不是array,尽管我认为由于原因我将数组传递给该方法多维数组起作用。

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;

}

最佳答案

您的方法getDistance将两个参数定义为类型Array,其中调用它的类型是double[],这是不相同的。

重写您的getDistance,如下所示;

public double getDistance(double[] points1, double[] points2){
    double x1 = points1[0];
    double x2 = points2[0];
    double y1 = points1[1];
    double y2 = points2[1];
    double z1 = points1[2];
    double z2 = points2[2];

    double distance = Math.sqrt(Math.pow(x1 - x2, 2) +(Math.pow(y1 - y2, 2) +
                        (Math.pow(z1 - z2, 2))));
    return distance;
}

10-04 20:40