如何在Java中为double []数组提供输入

时间:2012-09-17 05:55:23

标签: java

当在另一个方法中调用该函数时,如何直接提供输入,特别是当该输入是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 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分: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);

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

对不起,因为我的网已经关闭了......好的回答答案......

这是最简单的方法......

double[] first = { 0.10, 0.15, 0.30 };
double[] second { 65, 44.3, 10.11 };
double result1 = ns.dotPro1(first, second);