//--------------------------------------------------------------------------------------------- // CS100 P2: Q4 // // Requests and accepts a series of positive numbers as input from the user. // The number of values is not known in advance; an input of 0 indicates // the end of the list. Print the arithmetic mean, the maximum number, and // the minimum number. // // Author : Alan Renaud (ajr5@cornell.edu) // Date : 15 July 1999 //--------------------------------------------------------------------------------------------- public class listOfNumbers { static int count; // = number of positive values input by user static int min; // = smallest value input by user static int max; // = largest value input by user static int total; // = running total of values input by user static int value; // = latest number input by user //--------------------------------------------------------------------------------------------- // getRightInput // // input : none // return : the value input by user // // Prompts user for non-negative values and returns the value of input if input is // valid. Repeats prompt otherwise. //--------------------------------------------------------------------------------------------- private static int getRightInput() { int val; TokenReader in = new TokenReader(System.in); do { System.out.print("Enter a POSITIVE number, or 0 if you don't want to play: "); System.out.flush(); val = in.readInt(); }while (val < 0); return val; } //--------------------------------------------------------------------------------------------- // updateVars // // input : none // return : none // // Updates values of count, total, min, and max //--------------------------------------------------------------------------------------------- private static void updateVariables() { count++; total+=value; if (value < min) min = value; else if (value > max) max = value; } //--------------------------------------------------------------------------------------------- // processList // // input : none // return : none // // Process the list of numbers input by user. If the user inputs valid values, // update the relevant variables, end processing otherwise. //--------------------------------------------------------------------------------------------- private static void processList() { while (value!=0) { updateVariables(); value = getRightInput(); } } //--------------------------------------------------------------------------------------------- // printOutput // // input : none // return : none // // Calculate and output to the screen the arithmetic mean, maximum number, and // minimum number from the list input by the user. Output error message if user // did not enter any values. //--------------------------------------------------------------------------------------------- private static void printOutput() { TokenReader fini = new TokenReader(System.in); if (count==0) System.out.println("\nYou didn't enter any values, so I can't calculate the min, max, or mean."); else { System.out.println("\nThe minimum value entered was " + min + ".\nThe maximum value entered" + " was " + max + ".\nThe arithmetic mean was " + (double) total/count); } fini.waitUntilEnter(); } public static void main (String[] args) { value = getRightInput(); min=max=value; processList(); printOutput(); } }