150k views
0 votes
Write a program that reads a stream of integers from the console and stores them in an array. The array is then analyzed to compute the average of all the values in the array and finally all of the values that are above the average should be printed out to the screen. Specifically, you must write three methods: main(), readIntoArray(), and printAboveAverage(). main() creates a scanner, as well as an array of 100 integers, and outputs a message to the screen asking for a sequence of numbers.

readIntoArray() is then called to read values from the scanner and store them in the array. It must be passed two arguments: the scanner and the array. You should only store as many integers as the array can handle. Note, however, that there might be fewer than 100 values typed at the console – store whichever is fewer. This method must return how many integers, up to the length of the array, were read into the array. The hasNextInt() method of the scanner will be useful to determine if there are additional integers to read from the console. Additionally, when you are testing your code in Eclipse, and are done typing integers, press enter (i.e. to proceed to a new line) and then press CTRL+D to indicate to Eclipse that you are done typing (this is code for EOF, or end-of-file). Finally, printAboveAverage() should be called to read through the array, compute the average, and then print out all values in the array that are above the average. In particular, for each value above the average it should print the index in the array, as well as the value itself.

printAboveAverage() should take two arguments: the array and the actual number of values in the array. Note that this second argument is not the total number of elements that the array can hold, but is instead the number of values that are valid (i.e. populated in the readIntoArray() method). For example, the array should be able to hold up to 100 values, but there might have only been 15 values typed at the console. You have been supplied JUnit tests for the two methods, as well as the output for several example input sequences.

1 Answer

3 votes

Answer:

See explaination for Program source code.

Step-by-step explanation:

Program source code below.

/Import the required package.

import java.util.Scanner;

//Define the class AboveAverageArray.

public class AboveAverageArray

{

//Start the execution of the main() method.

public static void main(String[] args)

{

//Create an object of scanner class.

Scanner sc = new Scanner(System.in);

//Declare and create an array of 100 integers.

int[] arr = new int[100];

//Call the method readIntoArray() and store the

//returned value into the variable countOfInt.

int countOfInt = readIntoArray(arr, sc);

//Call the method printAboveAverag() to print the

//values of the array above average value.

printAboveAverage(arr, countOfInt);

}

//Define the method printAboveAverage().

public static void printAboveAverage(int[] array, int

countOfArr)

{

//Declare the required variables.

double sumOfValues = 0;

//Calculate the sum of elements of the array.

for (int i = 0; i < countOfArr; i++)

sumOfValues += array[i];

//Calculate the average of the elements of the

//array.

double avgOfArr = sumOfValues/countOfArr;

//Display the elements which are above the

//average.

System.out.print("The elements above ");

System.out.println("average "+avgOfArr +

" are:");

for (int i = 0; i < countOfArr; i++)

{

//Check if the current element is greater than

//average or not.

if(array[i] > avgOfArr)

//Display the element with the current

//index.

System.out.println("Array["+i+"]"+" = " +

array[i]);

}

}

//Define the method readIntoArray().

public static int readIntoArray(int[] arrOfInt,

Scanner sc)

{

//Declare teh required variables.

int num_values = 0;

//Prompt the user to enter the values of the

//array till the user press CTRL+D.

System.out.print("Enter the elements of ");

System.out.println("the array: ");

//Start the try/catch block.

try

{

//Start the while loop till the scanner has

//a integer input and the number of elements

//in the array is less than 100.

while(sc.hasNextInt() || num_values <

arrOfInt.length)

{

arrOfInt[num_values] = sc.nextInt();

num_values++;

}

}

//Catch block.

catch (Exception e)

{}

//Return the number of elements in the array.

return num_values;

}

}

User Ewan Valentine
by
5.1k points