java - 为什么我的阵列被识别为 double ?

标签 java arrays methods

在我调用 getDistance(points[i], points[j]) 的那一行,我收到错误消息,要求我将 getDistance 方法参数更改为 double 而不是数组,尽管我认为我正在将数组传递给该方法由于多维数组的工作方式。

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;
}

关于java - 为什么我的阵列被识别为 double ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34164759/

相关文章:

java - 不终止的 JMS 客户端

javascript - 根据字符串数组重新排序对象数组?

objective-c - 如何返回两个值?

java - 无法使用鼠标事件删除 Java 中的形状

java - Play 框架(Java)-Ebean : PersistenceException: No ScalarType registered

java - 此语言级别不支持 Lambda 表达式

java - 在 java 中输出分数作为分子而不是分母?

python - Numpy:在不使用 nan_to_num 的情况下乘以 NaN 值

java - 如何在 Java 中使用 super.toString() 将 toString 从子级传递到父级

java - 错误 java.lang.NoSuchMethodError