当在另一个方法中调用该函数时,如何直接提供输入,特别是当该输入是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;
}
正如你也可以看到我的旧编码,我试图以另一种方式解决它,但它没有奏效。它在上面已经注释掉了。
答案 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);