如何获得数组中前两个数的平均值?
问题描述:
我无法弄清楚如何获得阵列中前2个数字的平均值,然后是前3个数字。我在这些线路上出现错误。 average(numbers[0],numbers[1]));
和average(numbers[0],numbers[1],numbers[2]));
这里是我的代码。如何获得数组中前两个数的平均值?
public class NoVarargsTest{
// calculate average
public static double average(double[] numbers){
double total = 0.0;
// calculate total using the enhanced for statement
for (double d : numbers){
total += d;
}
return (total/(double)numbers.length);
}
public static void main (String[] args) {
double d1 = 10.0;
double d2 = 20.0;
double d3 = 30.0;
double d4 = 40.0;
double[] numbers= new double[4];
numbers[0] = 10.0;
numbers[1] = 20.0;
numbers[2] = 30.0;
numbers[3] = 40.0;
if (args.length == 0)
System.out.println("No Command Line arguments");
else {
System.out.println("You provided " + args.length
+ " arguments");
for (int i = 0; i < args.length; i++) {
System.out.println("args[" + i + "]: "
+ args[i]);
}
}
System.out.printf("d1 = %.1f%nd2 = %.1f%nd3 = %.1f%nd4 = %.1f%n%n",numbers[0],numbers[1], numbers[2], numbers[3]);
System.out.printf("Average of d1 and d2 is %.1f%n",
average(numbers[0],numbers[1]));
System.out.printf("Average of d1, d2 and d3 is %.1f%n",
average(numbers[0],numbers[1],numbers[2]));
System.out.printf("Average of d1, d2, d3 and d4 is %.1f%n",
average(numbers));
}
} // end class NoVarargsTest
答
如果你想使用可变参数,你必须声明你的方法签名:
public static double average(double... numbers){
numbers
届时将你的方法中的double[]
。
答
你public static double average(double[] numbers)
方法的参数是一个double []数组,但你只是通过两个双值这里:average(numbers[0],numbers[1]));
为了解决这个问题要么改变你的方法来public static double average(double... numbers)
或传递一个数组:average(new double[] {numbers[0], numbers[1]})
答
import java.util.Arrays;
public class NoVarargsTest
{
// calculate average
public static double average(double[] numbers)
{
double total = 0.0;
// calculate total using the enhanced for statement
for (double d : numbers)
{
total += d;
}
return total/(double)numbers.length;
}
// prints the wording around the array
private static void driver(double[] numbers)
{
System.out.println("The average of " + Arrays.toString(numbers) + " is "+average(numbers));
}
public static void main(String[] args)
{
driver(new double[] {10});
driver(new double[] {10, 20});
driver(new double[] {10, 20, 30});
}
} // end class VarargsTest
我从来没有机会使用可变参数。我喜欢这个解决方案。 – 2014-08-29 16:52:41
我个人宁愿用这种方式,但我需要学习如何使用这两种方式。 – SikRik 2014-08-29 17:30:38