class Mean { double calcMean(double[] nums){ return 20.0; } public static void main(String[] args){ double[] numbers; Mean calculator; numbers = new double[5]; // Math.random() returns a random double from 0.0 to 1.0 for(int i = 0; i < numbers.length; i++) numbers[i] = Math.random(); // Print the numbers for(int i = 0; i < numbers.length; i++) System.out.println(i+":\t"+numbers[i]); if(args[0].equals("arithmetic")) calculator = new Arithmetic(); else if(args[0].equals("geometric")) calculator = new Geometric(); else calculator = new Harmonic(); System.out.print("Mean: "+mean(numbers, calculator)); } static double mean(double[] nums, Mean cal){ /* if(which_mean.equals("arithmetic")) return arithmeticMean(nums); else if(which_mean.equals("geometric")) return geometricMean(nums); else return harmonicMean(nums); */ return cal.calcMean(nums); } static double arithmeticMean(double[] nums){ double agg = 0; // agg stands for aggregate for(int i = 0; i < nums.length; i++) agg += nums[i]; return agg/nums.length; } static double geometricMean(double[] nums){ double agg = 1.0; // agg stands for aggregate for(int i = 0; i < nums.length; i++) agg *= nums[i]; return Math.pow(agg, 1.0/nums.length); } static double harmonicMean(double[] nums){ double agg = 0; // agg stands for aggregate for(int i = 0; i < nums.length; i++) agg += (1/nums[i]); return nums.length/agg; } }