// // Average.java: read, format, compute average for a list of scores // import edu.colorado.io.*; class Average { public static final int MAXSCORES = 50; public static final int FIELD_WIDTH = 15; public static final EasyReader stdin = new EasyReader(System.in); public static void main(String[] args) { double[] scores = new double[MAXSCORES]; String[] names = new String[MAXSCORES]; int num_scores = readScores(scores, names); printScores(scores, names, num_scores); double ave; if ( num_scores > 0 ) ave = aveScore(scores, num_scores); else ave = 0.0; System.out.println(); printAverage(ave); // note names[0] == "Sam" gives the wrong results! if ( names[0].equals("Sam") && scores[0] < 60 ) System.out.println("Sam failed!"); } public static int readScores(double[] scores, String[] names) { int current = 0; names[current] = stdin.stringInput(); while ( ! stdin.isEOF() ) { scores[current] = stdin.doubleInput(); current++; names[current] = stdin.stringInput(); } return current; } public static void printScores(double[] scores, String[] names, int num_scores) { FormatWriter.printRight("Name", FIELD_WIDTH); FormatWriter.printRight("Score", FIELD_WIDTH); System.out.println(); FormatWriter.printRight("----", FIELD_WIDTH); FormatWriter.printRight("-----", FIELD_WIDTH); System.out.println(); for(int i = 0; i < num_scores; i++) { FormatWriter.printRight(names[i], FIELD_WIDTH); FormatWriter.printNumber(scores[i], FIELD_WIDTH, 1); System.out.println(); } } public static double aveScore(double[] scores, int num_scores) // precondition: num_scores > 0 { if ( num_scores <= 0 ) throw new IllegalArgumentException("Number of scores must " + "be positive."); double sum = 0.0; for(int i = 0; i < num_scores; i++) sum += scores[i]; return sum / (double)num_scores; } public static void printAverage(double ave) { System.out.print("Average score: "); FormatWriter.printNumber(ave, 0, 2); System.out.println(); } }