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: *