CSE142 Program Example handout #21 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 ---------------- 17: * 19: * 28: ** 31: * 32: * 33: * 37: * 38: ** 39: * 43: * 44: * 46: * 47: ** 48: * 50: *** 51: * 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: Fri Feb 18 10:48:31 PST 2005