-6

以下の Java コードを実行すると、34.5 の最大値が表示されるはずです。代わりに、2.0 です。変!このコードの何が問題なのか誰か教えてもらえますか? ありがとう。

public class VarargsDemo {

public static void main(String args[]){
        printMax(34.5, 3, 5, 6, 2);
        printMax(new double[]{1,2,3});
}

public static void printMax(double...numbers){
    if (numbers.length==0){
        System.out.println("No argument passed");
        return;
    }

    double result=numbers[0];
    for (int i=1; i<numbers.length;i++)
        result=numbers[i];
    System.out.println("the max value is "+result);
}

}

出力:

the max value is 2.0
the max value is 3.0
4

3 に答える 3

5
for (int i=1; i<numbers.length;i++)
    result=numbers[i];

これによりresult、配列の最後の要素が作成されます。最大の要素ではありません...

あなたはおそらく欲しかった

for (int i=1; i<numbers.length;i++)
    result = Math.max(numbers[i], result);
于 2013-08-08T19:10:32.370 に答える
1

varargs配列の 2 番目の要素から最後の要素まで繰り返し、その要素を出力するだけです。

手間を惜しまず、次のようなものを使用してください。

double lower = 1.0d;
double higher = 2.0d;
System.out.println(Math.max(lower, higher));

...そしてもちろん、それをあなたの方法に適応させますvarargs-それはあなたに任せます.

于 2013-08-08T19:13:23.590 に答える
1

org.apache.commons.lang.math.NumberUtilsdouble max(double[] array)のメソッドを使用できます。

配列の最大値を返します。

于 2013-08-08T19:14:47.650 に答える