【问题标题】:Why is my array being recognized as a double?为什么我的数组被识别为双精度数?
【发布时间】: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 类型,但它是实用程序类,它允许我们使用反射对数组进行操作,而不是存储数组引用。因此我的问题。稍后可能会有更多以下问题,但要问他们,我想更多地了解您在代码中使用的内容以及您认为它应该起作用的原因。

标签: java arrays methods


【解决方案1】:

您的方法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;
}

【讨论】:

  • 我已经有一段时间没有访问此内容了。现在正在做化妆工作,只是脸被掌心...不知道我是怎么搞砸的。感谢您的帮助。
【解决方案2】:

您的方法应该声明一个与您在 main 中所做的相同的数组。

现在: 而不是public double getDistance(Array points1[], Array points2[])

应该是: public double getDistance(double points1[], double points2[])

【讨论】:

  • 您可以通过提供更广泛的代码示例来改进您的答案。
猜你喜欢
  • 1970-01-01
  • 2018-12-23
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 2019-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多