/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
class GradeBookTest
{
public static void main
( String[] args
) {
int[] gradesArray = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
GradeBook myGradeBook = new GradeBook("CS101 Introduction to Java Programming", gradesArray );
myGradeBook.displayMessage();
myGradeBook.processGrades();
}
}
class GradeBook
{
private int[] grades;
public GradeBook
( String name,
int[] gradesArray
) {
courseName = name;
grades = gradesArray;
}
public void setCourseName
( String name
) {
courseName = name;
}
{
return courseName;
}
public void displayMessage()
{
System.
out.
printf( "Welcome to the grade book for%s!",getCourseName
() ); }
public void processGrades()
{
outputGrades();
System.
out.
printf( "Class average is %.2f", getAverage
() ); outputBarChart();
}
public double getAverage()
{
int total = 0; // initialize total
for ( int grade : grades )
total += grade;
return ( double ) total / grades.length;
}
public void outputBarChart()
{
int[] frequency=new int[11];
for(int i = 0; i < grades.length; i++){
/*
switch(grades[i]/10){
case 0:
frequency[0]++;
break;
case 1:
frequency[1]++;
break;
case 2:
frequency[2]++;
break;
case 3:
frequency[3]++;
break;
case 4:
frequency[4]++;
break;
case 5:
frequency[5]++;
break;
case 6:
frequency[6]++;
break;
case 7:
frequency[7]++;
break;
case 8:
frequency[8]++;
break;
case 9:
frequency[9]++;
break;
case 10:
frequency[10]++;
break;
}*/
frequency[grades[i]/10]++; //例如25分 歸類到frequency[2]
}
System.
out.
print("Grade distribution:"); for(int i = 0; i < frequency.length; i++){
if(i == frequency.length-1)
else
System.
out.
print(i
+"0-"+i
+"9:"); for(int j = 0; j < frequency[i]; j++){
}
}
}
public void outputGrades()
{
System.
out.
println( "The grades are:" ); for ( int student = 0; student < grades.length; student++ )
System.
out.
printf( "Student %2d: %3d", student
+ 1, grades
[ student
] ); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgoKIGNsYXNzIEdyYWRlQm9va1Rlc3QgCiB7IAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oIFN0cmluZ1tdIGFyZ3MgKSAKCXsgCgoJCWludFtdIGdyYWRlc0FycmF5ID0geyA4NywgNjgsIDk0LCAxMDAsIDgzLCA3OCwgODUsIDkxLCA3NiwgODcgfTsgCgkKCQlHcmFkZUJvb2sgbXlHcmFkZUJvb2sgPSBuZXcgR3JhZGVCb29rKCJDUzEwMSBJbnRyb2R1Y3Rpb24gdG8gSmF2YSBQcm9ncmFtbWluZyIsIGdyYWRlc0FycmF5ICk7IAoJCW15R3JhZGVCb29rLmRpc3BsYXlNZXNzYWdlKCk7IAoJCW15R3JhZGVCb29rLnByb2Nlc3NHcmFkZXMoKTsgCgl9IAogfSAKIAogCiBjbGFzcyBHcmFkZUJvb2sgCiB7IAoJcHJpdmF0ZSBTdHJpbmcgY291cnNlTmFtZTsgCglwcml2YXRlIGludFtdIGdyYWRlczsgCgoJcHVibGljIEdyYWRlQm9vayggU3RyaW5nIG5hbWUsIGludFtdIGdyYWRlc0FycmF5ICkgCgl7IAoJCWNvdXJzZU5hbWUgPSBuYW1lOwoJCWdyYWRlcyA9IGdyYWRlc0FycmF5OyAKCX0gCglwdWJsaWMgdm9pZCBzZXRDb3Vyc2VOYW1lKCBTdHJpbmcgbmFtZSApIAoJeyAKCQljb3Vyc2VOYW1lID0gbmFtZTsKCX0gCglwdWJsaWMgU3RyaW5nIGdldENvdXJzZU5hbWUoKSAKCXsgCgkJcmV0dXJuIGNvdXJzZU5hbWU7Cgl9IAoJcHVibGljIHZvaWQgZGlzcGxheU1lc3NhZ2UoKSAKCXsgCgkJU3lzdGVtLm91dC5wcmludGYoICJXZWxjb21lIHRvIHRoZSBncmFkZSBib29rIGZvciVzISIsZ2V0Q291cnNlTmFtZSgpICk7IAoJfSAKCXB1YmxpYyB2b2lkIHByb2Nlc3NHcmFkZXMoKSAKCXsgCgkJb3V0cHV0R3JhZGVzKCk7IAoJCVN5c3RlbS5vdXQucHJpbnRmKCAiQ2xhc3MgYXZlcmFnZSBpcyAlLjJmIiwgZ2V0QXZlcmFnZSgpICk7IAoJCW91dHB1dEJhckNoYXJ0KCk7IAoJfSAKCXB1YmxpYyBkb3VibGUgZ2V0QXZlcmFnZSgpIAoJeyAKCQlpbnQgdG90YWwgPSAwOyAvLyBpbml0aWFsaXplIHRvdGFsCgkJZm9yICggaW50IGdyYWRlIDogZ3JhZGVzICkgCgkJCXRvdGFsICs9IGdyYWRlOyAKCQlyZXR1cm4gKCBkb3VibGUgKSB0b3RhbCAvIGdyYWRlcy5sZW5ndGg7IAoJfSAKCglwdWJsaWMgdm9pZCBvdXRwdXRCYXJDaGFydCgpIAoJewoJCWludFtdIGZyZXF1ZW5jeT1uZXcgaW50WzExXTsKCQkKCQlmb3IoaW50IGkgPSAwOyBpIDwgZ3JhZGVzLmxlbmd0aDsgaSsrKXsKCQkJLyoKCQkJc3dpdGNoKGdyYWRlc1tpXS8xMCl7CgkJCQljYXNlIDA6CgkJCQkJZnJlcXVlbmN5WzBdKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDE6CgkJCQkJZnJlcXVlbmN5WzFdKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDI6CgkJCQkJZnJlcXVlbmN5WzJdKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDM6CgkJCQkJZnJlcXVlbmN5WzNdKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDQ6CgkJCQkJZnJlcXVlbmN5WzRdKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDU6CgkJCQkJZnJlcXVlbmN5WzVdKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDY6CgkJCQkJZnJlcXVlbmN5WzZdKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDc6CgkJCQkJZnJlcXVlbmN5WzddKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDg6CgkJCQkJZnJlcXVlbmN5WzhdKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDk6CgkJCQkJZnJlcXVlbmN5WzldKys7CgkJCQkJYnJlYWs7CgkJCQljYXNlIDEwOgoJCQkJCWZyZXF1ZW5jeVsxMF0rKzsKCQkJCQlicmVhazsKCQkJfSovCgkJCQoJCQlmcmVxdWVuY3lbZ3JhZGVzW2ldLzEwXSsrOyAgLy/kvovlpoIyNeWIhiDmrbjpoZ7liLBmcmVxdWVuY3lbMl0KCQl9CgkJCgkJU3lzdGVtLm91dC5wcmludGxuKCk7CgkJU3lzdGVtLm91dC5wcmludCgiR3JhZGUgZGlzdHJpYnV0aW9uOiIpOwoJCWZvcihpbnQgaSA9IDA7IGkgPCBmcmVxdWVuY3kubGVuZ3RoOyBpKyspewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oKTsKCQkJaWYoaSA9PSBmcmVxdWVuY3kubGVuZ3RoLTEpCgkJCQlTeXN0ZW0ub3V0LnByaW50KCIxMDA6Iik7CgkJCWVsc2UKCQkJCVN5c3RlbS5vdXQucHJpbnQoaSsiMC0iK2krIjk6Iik7CgkJCWZvcihpbnQgaiA9IDA7IGogPCBmcmVxdWVuY3lbaV07IGorKyl7CgkJCQlTeXN0ZW0ub3V0LnByaW50KCIqIik7CgkJCX0KCQl9CgoJfQkKCglwdWJsaWMgdm9pZCBvdXRwdXRHcmFkZXMoKSAKCXsgCgkJU3lzdGVtLm91dC5wcmludGxuKCAiVGhlIGdyYWRlcyBhcmU6IiApOyAKCQlmb3IgKCBpbnQgc3R1ZGVudCA9IDA7IHN0dWRlbnQgPCBncmFkZXMubGVuZ3RoOyBzdHVkZW50KysgKSAKCQkJU3lzdGVtLm91dC5wcmludGYoICJTdHVkZW50ICUyZDogJTNkIiwgc3R1ZGVudCArIDEsIGdyYWRlc1sgc3R1ZGVudCBdICk7IAoJfSAKIH0g