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

新しい double[5]; 長さ 5 の配列が作成されます。この数値を必要な長さに変更します。

注: rand.nextdouble は、0 から 1 の間の乱数のみを提供します。たとえば、0 から 100 の間である場合は、rand.nextDouble()*100 を使用します。

その後、単に使用できます

double result1 = ns.dotPro1(list1, list2);
于 2012-09-17T07:50:43.377 に答える
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 に答える
0

配列パラメーターを渡すときは、中括弧を入れないでください。

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

于 2012-09-17T06:01:35.497 に答える