fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7.  
  8. class GradeBookTest
  9. {
  10. public static void main( String[] args )
  11. {
  12.  
  13. int[] gradesArray = { 87, 68, 94, 100, 83, 78, 85, 91, 76, 87 };
  14.  
  15. GradeBook myGradeBook = new GradeBook("CS101 Introduction to Java Programming", gradesArray );
  16. myGradeBook.displayMessage();
  17. myGradeBook.processGrades();
  18. }
  19. }
  20.  
  21.  
  22. class GradeBook
  23. {
  24. private String courseName;
  25. private int[] grades;
  26.  
  27. public GradeBook( String name, int[] gradesArray )
  28. {
  29. courseName = name;
  30. grades = gradesArray;
  31. }
  32. public void setCourseName( String name )
  33. {
  34. courseName = name;
  35. }
  36. public String getCourseName()
  37. {
  38. return courseName;
  39. }
  40. public void displayMessage()
  41. {
  42. System.out.printf( "Welcome to the grade book for %s!\n",getCourseName() );
  43. }
  44. public void processGrades()
  45. {
  46. outputGrades();
  47. System.out.printf( "Class average is %.2f\n", getAverage() );
  48. System.out.printf( "Class average is %.2f(遞迴)", getAverage(grades.length) );
  49. outputBarChart();
  50. }
  51.  
  52. public double getAverage()
  53. {
  54. int total = 0; // initialize total
  55. for ( int grade : grades )
  56. total += grade;
  57. return ( double ) total / grades.length;
  58. }
  59.  
  60. public double getAverage(int n)
  61. {
  62. if(n == 0)
  63. return grades[0];
  64. return (grades[n-1]+getAverage(n-1)*(n-1) ) / n;
  65. }
  66. public void outputBarChart()
  67. {
  68. int[] frequency=new int[11];
  69.  
  70. for(int i = 0; i < grades.length; i++){
  71. frequency[grades[i]/10]++; //例如25分 歸類到frequency[2]
  72. }
  73.  
  74. System.out.println();
  75. System.out.print("Grade distribution:");
  76. for(int i = 0; i < frequency.length; i++){
  77. System.out.println();
  78. if(i == frequency.length-1)
  79. System.out.print("100:");
  80. else
  81. System.out.print(i+"0-"+i+"9:");
  82. for(int j = 0; j < frequency[i]; j++){
  83. System.out.print("*");
  84. }
  85. }
  86.  
  87. }
  88.  
  89. public void outputGrades()
  90. {
  91. System.out.println( "The grades are:" );
  92. for ( int student = 0; student < grades.length; student++ )
  93. System.out.printf( "Student %2d: %3d\n", student + 1, grades[ student ] );
  94. }
  95. }
Success #stdin #stdout 0.05s 2184192KB
stdin
Standard input is empty
stdout
Welcome to the grade book for CS101 Introduction to Java Programming!
The grades are:
Student  1:  87
Student  2:  68
Student  3:  94
Student  4: 100
Student  5:  83
Student  6:  78
Student  7:  85
Student  8:  91
Student  9:  76
Student 10:  87
Class average is 84.90
Class average is 84.90(遞迴)
Grade distribution:
00-09:
10-19:
20-29:
30-39:
40-49:
50-59:
60-69:*
70-79:**
80-89:****
90-99:**
100:*