Homework #1 Solution

/**
 * @author hornick
 * This class/program creates arrays and ArrayLists, fills them with values, and computes the averages of the values
 */
public class CollectionApp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		double numArray[] = null; // a primitive array that holds a collection of doubles
		ArrayList<Double> numList = null; // a JCF collection class that holds a collection of Doubles
		
		System.out.println("Enter a low and a high value: ");
		Scanner kbd = new Scanner(System.in);
		int low = kbd.nextInt();
		int high = kbd.nextInt();
		
		numArray = fillArray( low, high ); // create and fill the array
		numList = fillArrayList( low, high ); // create and fill the ArrayList
		
		double avg1 = getArrayAvg( numArray );
		double avg2 = getArrayListAvg( numList );
		
		System.out.println("Array avg=" + avg1 + ", ArrayList avg=" + avg2 );
	}
	
	/**
	 * This method allocates and fills an array with the values between the specified low and high values
	 * @param low - the lowest value in the array
	 * @param high - the highest value in the array
	 * @return - updated reference to the created non-empty array of doubles
	 */
	public static double[] fillArray( int low, int high ) {
		double[] nums = new double[high-low+1]; // create the actual array just big enough to hold all the values
		int index = 0;
		for(int i=low; i<=high; i++) {
			nums[index++] = i;				   // stuff the values into the array at specific locations
		}
		return nums;
	}
	
	/**
	 * This method allocates and fills an ArrayList with the values between the specified low and high values
	 * @param low - the lowest value in the ArrayList
	 * @param high - the highest value in the ArrayList
	 * @return - updated reference to the created non-empty ArrayList of Doubles
	 */
	public static ArrayList<Double> fillArrayList( int low, int high ) {
		ArrayList<Double> nums = new ArrayList<Double>(); // create the actual ArrayList (size is automatically managed internally)
		for(int i=low; i<=high; i++) {
			nums.add((double)(i));					// add values to the ArrayList; size grows automatically as needed
		}
		return nums;
	}
	
	/**
	 * This method computes the average of the values in the specified array
	 * @param numArray - reference to an array of values, created elsewhere
	 * @return - the average of the values within the array
	 */
	public static double getArrayAvg( double numArray[] ) {
		double sum = 0.0;
		for(int i=0; i<numArray.length; i++) {
			sum += numArray[i];	// add to the sum by retrieving values from specific array locations
		}
		return sum/numArray.length;
	}
	
	/**
	 * This method computes the average of the values in the specified ArrayList
	 * @param numList - reference to an ArrayList of values, created elsewhere
	 * @return - the average of the values within the ArrayList
	 */
	public static double getArrayListAvg( ArrayList<Double> numList ) {
		double sum = 0.0;
		for(int i=0; i<numList.size(); i++) {
			sum += numList.get(i);	// add to the sum by retrieving values from specific ArrayList locations
		}
// OR, you can use this method below to iterate through a Collection (such as an ArrayList) - more on this in CS2852
//		for( double x: numList ) {
//			sum += x;
//              }
		return sum/numList.size();
	}
}