Java 配置计算一系列双倍乘积的应用程序

Java 配置计算一系列双倍乘积的应用程序,java,Java,我正在尝试配置一个应用程序,用于计算传递给calcProduct方法的一系列双精度的乘积。calcProduct将具有可变长度参数,并应返回计算的产品。这应该与阵列的标识一起打印 以下是我目前的代码: 导入java.text.DecimalFormat; 导入java.text.NumberFormat 公共类可变长度{ public static double calProduct(double... numbers) { double total = 0.0; for (d

我正在尝试配置一个应用程序,用于计算传递给calcProduct方法的一系列双精度的乘积。calcProduct将具有可变长度参数,并应返回计算的产品。这应该与阵列的标识一起打印

以下是我目前的代码:

导入java.text.DecimalFormat; 导入java.text.NumberFormat

公共类可变长度{

public static double calProduct(double... numbers)
{
    double total = 0.0;

    for (double number : numbers)
        total += number;

    return total / numbers.length;
}

public static void main(String[] args)
{

    NumberFormat myFormat = NumberFormat.getInstance();
    myFormat.setGroupingUsed(true);

    DecimalFormat decimalFormat = new DecimalFormat("#.###");
    decimalFormat.setGroupingUsed(true);
    decimalFormat.setGroupingSize(3);


    double[] array1 = {2.1, 3.2, 4.3};
    double[] array2 = {1, 2, 3, 4, 5};
    double[] array3 = {2.0, 110.12345};
    double[] array4 = {10.0, 12, 13.1, 4, 5.2, 6, 7.3, 8, 9.4, 100};
    double[] array5 = { };

    System.out.println(myFormat.format(array1));
    System.out.println(myFormat.format(array2));
    System.out.println(myFormat.format(array3));
    System.out.println(myFormat.format(array4));
    System.out.println(myFormat.format(array5));

    System.out.println(decimalFormat.format(array1));
    System.out.println(decimalFormat.format(array2));
    System.out.println(decimalFormat.format(array3));
    System.out.println(decimalFormat.format(array4));
    System.out.println(decimalFormat.format(array5));


   System.out.printf("array1 = %.1f\narray2 = %.1f\narray3 = %.1f\narray4 = %.1f\narray5 = %.1f\n\n", array1, array2, array3, array4);

    System.out.println("The average of array1 and array2 is \n" + calProduct(array1, array2));
    System.out.println("The average of array1, array2, and array3 is \n" + calProduct(array1, array2, array3));
    System.out.println("The average of array1, array2, and array3, array4 is \n" + calProduct(array1, array2, array3, array4));
    System.out.println("The average of array1, array2, array3, array4 and array5 is \n" + calProduct(array1, array2, array3, array4, array5));
}
}

我不断地发现这个错误:

线程“main”java.lang中出现异常。错误:未解决的编译问题: 类型variableLength中的方法calProduct(double…)不适用于参数(double[],double[]) variableLength类型中的方法calProduct(double…)不适用于参数(double[],double[],double[]) variableLength类型中的方法calProduct(double…)不适用于参数(double[],double[],double[],double[]) variableLength类型中的方法calProduct(double…)不适用于参数(double[],double[],double[],double[],double[])

我做错了什么?如何实现工作计划?
提前谢谢你

您的错误是,您提供给函数calProduct的内容与您在函数中声明的内容不同

public static double calProduct(double[] numbers)
这样,您就可以告诉java您将给出一个包含双精度的数组

此外,它还表示您只指定了一个参数。这意味着java不希望您提交多个数组

public static double calProduct(double[] numbers, double[] number 2)
我希望你能明白。也可以在另一个数组中包含一个数组,然后只需传递一个数组


问题在于,编写
calProduct
函数是为了获取一系列的双精度,但当您实际调用该函数时,您将传递给它一系列的双精度数组。由于这些类型不兼容,因此会出现所描述的编译错误

如果要编辑
calProduct
函数以获取一系列双精度数组,还需要使用两个
进行
循环,一个用于循环数组系列,另一个用于循环每个数组中的数字。你们还需要跟踪你们有多少双倍的计数,因为看起来你们实际上是在计算平均值,而不仅仅是乘积

例如,重写的
calProduct
函数可能如下所示:

public static double calProduct(double[]... numberArrays) {
    double total = 0.0;
    int count = 0;

    for (double[] numbers : numberArrays) {
        for (double number : numbers) {
            total += number;
            count++;
        }
    }

    return total / count;
}

这回答了你的问题吗?
public static double calProduct(double[]... numberArrays) {
    double total = 0.0;
    int count = 0;

    for (double[] numbers : numberArrays) {
        for (double number : numbers) {
            total += number;
            count++;
        }
    }

    return total / count;
}