/* 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 String courseName; 
	private int[] grades; 

	public GradeBook( String name, int[] gradesArray ) 
	{ 
		courseName = name;
		grades = gradesArray; 
	} 
	public void setCourseName( String name ) 
	{ 
		courseName = name;
	} 
	public String getCourseName() 
	{ 
		return courseName;
	} 
	public void displayMessage() 
	{ 
		System.out.printf( "Welcome to the grade book for %s!\n",getCourseName() ); 
	} 
	public void processGrades() 
	{ 
		outputGrades(); 
		System.out.printf( "Class average is %.2f\n", getAverage() ); 
		System.out.printf( "Class average is %.2f(遞迴)", getAverage(grades.length) ); 
		outputBarChart(); 
	} 
	
	public double getAverage() 
	{ 
		int total = 0; // initialize total
		for ( int grade : grades ) 
			total += grade; 
		return ( double ) total / grades.length; 
	} 
	
	public double getAverage(int n)
	{
		if(n == 0)
			return grades[0];
		return (grades[n-1]+getAverage(n-1)*(n-1) ) / n;
	}
	public void outputBarChart() 
	{
		int[] frequency=new int[11];
		
		for(int i = 0; i < grades.length; i++){
			frequency[grades[i]/10]++;  //例如25分 歸類到frequency[2]
		}
		
		System.out.println();
		System.out.print("Grade distribution:");
		for(int i = 0; i < frequency.length; i++){
			System.out.println();
			if(i == frequency.length-1)
				System.out.print("100:");
			else
				System.out.print(i+"0-"+i+"9:");
			for(int j = 0; j < frequency[i]; j++){
				System.out.print("*");
			}
		}

	}	

	public void outputGrades() 
	{ 
		System.out.println( "The grades are:" ); 
		for ( int student = 0; student < grades.length; student++ ) 
			System.out.printf( "Student %2d: %3d\n", student + 1, grades[ student ] ); 
	} 
 } 