我正在尝试配置一个应用程序,该应用程序计算传递给方法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 = %.1fnarray2 = %.1fnarray3 = %.1fnarray4 = %.1fnarray5 = %.1fnn", 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 中的异常:未解决的编译问题: 类型变量 Length 中的方法 calProduct(double...( 不适用于参数 (double[], double[]( 变量 Length 中的方法 calProduct(double...( 不适用于参数 (double[], double[], double[]( 变量 变量长度中的方法 calProduct(double...( 不适用于参数 (double[], double[], double[], double[]( 变量 Length 中的方法 calProduct(double...( 不适用于参数 (
double[], double[], double[], double[], double[](at variableLength.main(variableLength.java:52)
我做错了什么?我怎样才能实现一个工作计划? 提前谢谢你!
问题是你的calProduct
函数被写成接受一系列双精度,但是当你实际调用该函数时,你给它传递了一系列双精度数组。 由于这些类型不兼容,因此会出现所描述的编译错误。
如果要编辑calProduct
函数以采用一系列双精度数组,则还需要使用两个for
循环,一个循环遍历数组系列,另一个循环遍历每个数组中的数字。 您还需要跟踪您拥有多少双精度的计数,因为看起来您实际上是在计算平均值,而不仅仅是产品。
例如,重写的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;
}
你的错误是说你给函数calProduct 的东西不是你在函数中声明的。
public static double calProduct(double[] numbers)
通过这种方式,你告诉java你将给出一个包含双精度的数组。
此外,它说您只指定了一个参数。这意味着 java 不希望你交出多个数组。
public static double calProduct(double[] numbers, double[] number 2)
我希望你明白这个想法。您也可以在另一个数组中包含数组,然后只需传递一个数组。
java 中的函数 java 中的数组