CSE142 Program Example handout #20 Program file Histogram.java --------------------------- // Stuart Reges // 2/18/05 // // This program reads an input file of test scores (integers) and displays a // histogram of the score distribution. import java.io.*; import java.awt.*; public class Histogram { public static final int MAX_SCORE = 100; // max possible score public static void main(String[] args) throws FileNotFoundException { Scanner input = new Scanner(new File("histogram.txt")); // read file into count array int[] count = new int[MAX_SCORE + 1]; while (input.hasNextInt()) count[input.nextInt()]++; // use array to produce a histogram for (int i = 0; i < count.length; i++) if (count[i] != 0) { System.out.print(i + ": "); for (int j = 1; j <= count[i]; j++) System.out.print("*"); System.out.println(); } draw(count); } // Uses a DrawingPanel to draw the histogram public static void draw(int[] count) { DrawingPanel p = new DrawingPanel(count.length * 3 + 6, 200); Graphics g = p.getGraphics(); g.setColor(Color.BLACK); for (int i = 0; i < count.length; i++) g.drawLine(i * 3 + 3, 175, i * 3 + 3, 175 - 5 * count[i]); } } Histogram output ---------------- 5: * 26: * 28: * 30: * 31: ** 32: ** 33: * 34: ** 36: ** 38: * 39: ** 41: * 42: * 43: *** 44: ** 45: * 48: **** 49: ** 50: *** 52: * 53: **** 54: * 55: *** 56: *** 57: ***** 58: * 59: ** 60: ***** 61: ********* 62: **** 63: ***** 64: ****** 65: ** 66: **** 67: ******* 68: **** 69: ***** 70: ******** 71: *** 72: ******* 73: ********** 74: ******* 75: *** 76: **** 77: ******* 78: ******* 79: ************** 80: ************ 81: *************** 82: ********** 83: **** 84: ***************** 85: ************* 86: **** 87: ************** 88: ************** 89: ************ 90: ************* 91: ************* 92: ************** 93: ********* 94: **** 95: ****** 96: *** 97: ******** 98: ******* 99: ** 100: *
Stuart Reges
Last modified: Mon May 16 16:14:04 PDT 2005