阿摩線上測驗 登入

申論題資訊

試卷:104年 - 104年關務人員、104年身心障礙人員、104年國軍上校以上軍官轉任考身障特考四等_資訊處理#29729
科目:程式設計
年份:104年
排序:0

申論題內容

三、參考 GradeBook.java, GradeBookTest.java 檔案,試撰寫“GradeBook”class 內編號
39 行的成績分布列印功能
public void outputBarChart()
{
int[] frequency=new int[11];

}
其中 frequency 變數的宣告不得改變,且不得使用任何 Java 類別程式庫。假如
取消編號 29 行”outputBarChart()”的註解(亦即 processGrades()最後一行會呼叫
outputBarChart()),再次執行 GradeBookTest,則 outputBarChart()必須印出如下結果。
(20 分)
Grade distribution:
00-09:
10-19:
20-29:
30-39:
40-49:
50-59:
60-69: *
70-79: **
80-89: ****
90-99: **
100: *


詳解 (共 2 筆)

詳解 提供者:芷

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("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("*");

}

}

 

}


 

 

執行結果

http://ideone.com/gFopHp 

詳解 提供者:hchungw
為了完成 outputBarChart 方法的實作,我們需要依照成績分布來計算每個成績段的頻率,然後根據這些頻率來繪製條形圖。下面是 outputBarChart 方法的完整實作,這段代碼將遍歷 grades 數組,統計每個成績段的學生數量,並根據每個成績段的學生數量來繪製相對應的星號 (*):

public void outputBarChart() {
    int[] frequency = new int[11];
    // 對每個成績進行分組計數
    for (int grade : grades) {
        ++frequency[grade / 10];
    }
    System.out.println("Grade distribution:");
    // 對每個成績段繪製條形圖
    for (int count = 0; count < frequency.length; count++) {
        // 輸出成績段範圍
        if (count == 10) {
            System.out.printf("%5d: ", 100);
        } else {
            System.out.printf("%02d-%02d: ", count * 10, count * 10 + 9);
        }
        // 繪製對應頻率的星號 (*)
        for (int stars = 0; stars < frequency[count]; stars++) {
            System.out.print("*");
        }
        System.out.println(); // 開始新的一行
    }
}
這段代碼首先初始化一個長度為11的 frequency 數組來存儲每個成績段(0-9, 10-19, ..., 100)的學生數量。然後,通過遍歷 grades 數組來計數每個成績屬於哪個成績段,並相應地增加該成績段在 frequency 數組中的計數。最後,使用兩個嵌套的for循環來輸出每個成績段及其對應的星號 (*) 來繪製條形圖。
若將這段代碼添加到 GradeBook 類中並取消 processGrades 方法中對 outputBarChart 方法的註解,再次執行 GradeBookTest 時,除了之前的輸出外,還會看到一個基於提供的成績數據所繪製的成績分布條形圖,如題目所示的輸出結果。