0

double[]当在另一种方法中调用该函数时,尤其是当该输入是一个数组时,如何直接提供输入?

public double dotPro1(double[] vectorA, double[] vectorB) {
    double[] vecPro;
    vecPro = new double[2];
    vecPro[0] = vectorA[0]*vectorB[0];
    vecPro[1] = vectorA[1]*vectorB[1];
    return vecPro[0] + vecPro[1];
}
public double dotPro2(double[] length) {
    double[] lenPro;
    lenPro = new double[1];
    lenPro[0] = length[0];
    return lenPro[0];
}
public static double cosine(double a) {
    double x = Math.cos(Math.toRadians(a));
    /*Class c = Class.forName("NaiveStrategy");
        Class methodTypes[] = new Class[3];
        methodTypes[0] = Double.TYPE;
        methodTypes[1] = Double.TYPE;
        methodTypes[2] = Double.TYPE;
        Method[] m = c.getMethods();*/
    NaiveStrategy ns = new NaiveStrategy();
  problem-->ns.dotPro1(vectorA[], vectorB[]);
  problem-->ns.dotPro2(length[]);
    return 0;  
}

正如您还可以看到我的旧编码,我尝试以另一种方式解决它,但它没有奏效。上面已经注释掉了。

4

4 回答 4

3

完全不清楚你的意思——但你现在所掌握的语法肯定是行不通的。如果您只是想在执行时创建一个数组,那很容易:

NaiveStrategy ns = new NaiveStrategy();
// Either using separate variables...
double[] first = { 0.5, 0.1, 10 };
double[] second { 5, 20.3, 1 };
double result1 = ns.dotPro1(first, second);

// Or inline...
double results2 = ns.dotPro2(new double[] { 50.2, 0.3 });

我不知道为什么你的代码中有注释掉的反射调用......

此外,正如评论中所述,您的方法似乎没有特定目的创建数组。它们可以重写为:

public double dotPro1(double[] vectorA, double[] vectorB) {
    return vectorA[0] * vectorB[0] + vectorA[1] * vectorB[1];
}

public double dotPro2(double[] length) {
    return length[0];
}
于 2012-09-17T05:59:45.187 回答
1

您在一条评论中说您想要随机值。所以使用 Random 类来生成它们。

double[] list1 = new double[5];
double[] list2 = new double[5];
Random rand = new Random();
for (int i = 0; i < list1.length; i++) {
    list1[i] = rand.nextDouble();
}

for (int i = 0; i < list2.length; i++) {
    list2[i] = rand.nextDouble();
}

新双[5];将创建一个长度为 5 的数组。将此数字更改为您想要的长度。

注意:rand.nextdouble 只给出 0 到 1 之间的随机数。如果你希望它在 0 到 100 之间,那么使用 rand.nextDouble()*100

然后你可以使用

double result1 = ns.dotPro1(list1, list2);
于 2012-09-17T07:50:43.377 回答
0

传递数组参数时不要放方括号。

= ns.dotPro2(length);
= ns.dotPro1(vectorA, vectorB);

于 2012-09-17T06:01:35.497 回答
0

抱歉耽搁了,因为我的网断了......好吧,回到答案......

这是最简单的方法...

double[] first = { 0.10, 0.15, 0.30 };
double[] second { 65, 44.3, 10.11 };
double result1 = ns.dotPro1(first, second);
于 2012-09-17T06:15:13.673 回答