阿摩線上測驗 登入

申論題資訊

試卷:99年 - 099年專門職業及技術人員高等建築師、技師暨普通不動產經紀人、記帳士資訊技師#32440
科目:程式設計
年份:99年
排序:0

題組內容

一個班級 40 位同學,考完期中考,已經知道國文、數學成績,請撰寫適當程式碼解決 下列問題(若題目規範有不周之處,請自行假設並說明之);程式必須採取物件導向方 式設計,儘量採用類別、繼承、封裝、多型等技巧,可採用上述技巧而未採用者將會影 響其得分:

申論題內容

四、按同學個別的總分排名次,並依學號列印成績及名次。(15 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
要按學生的總分進行排名,並根據學號列印每位學生的成績及其排名,我們可以在Classroom類中添加一個新的方法來實現這個功能。這個方法首先計算每位學生的總分,然後根據總分對學生進行排序,最後按照學號的順序列印出每位學生的成績和名次。
這裏的實現將使用Java的集合框架,特別是List和Collections工具類來進行排序和查找。我們還需要一個輔助類或者使用Map來關聯每位學生的學號、成績及其排名。
實現代碼
首先,我們擴展Student類,添加一個方法來返回表示成績的字串:
java

public class Student {
    // 省略其他屬性和方法...
    // 返回表示成績的字串
    public String getScoreString() {
        return String.format("學號: %s, 名字: %s, 國文成績: %d, 數學成績: %d, 總分: %d", 
            id, name, chineseScore, mathScore, getTotalScore());
    }
}
然後,在Classroom類中添加一個方法來列印學生的成績和排名:
java
Copy code
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.ArrayList;
import java.util.stream.Collectors;
public class Classroom {
    private Map<String, Student> students;
    // 省略其他方法...
    // 按總分排名並列印成績及名次
    public void printScoresAndRanks() {
        // 將學生放入列表中以便排序
        List<Student> sortedStudents = new ArrayList<>(students.values());
        // 按總分降序排序
        Collections.sort(sortedStudents, Comparator.comparingInt(Student::getTotalScore).reversed());
        // 為每個學生分配排名
        int rank = 1;
        for (Student student : sortedStudents) {
            System.out.println(student.getScoreString() + ", 名次: " + rank);
            rank++;
        }
    }
}
這個方法首先把students映射中的所有學生放入一個列表中,然後使用Collections.sort方法和一個自定義的比較器(Comparator)按總分進行降序排序。排序完成後,方法遍曆排序後的學生列表,為每位學生列印成績和排名。
使用
你可以通過向Classroom實例添加學生並調用printScoresAndRanks方法來測試這個功能:
java
Copy code
public static void main(String[] args) {
    Classroom classroom = new Classroom();
    // 添加學生示例
    classroom.addStudent(new Student("001", "Alice", 90, 92));
    classroom.addStudent(new Student("002", "Bob", 85, 88));
    // 添加更多學生...
    classroom.printScoresAndRanks(); // 列印學生的成績和排名
}
這種方法可以有效地根據學生的總分進行排名,並按照排名順序列印出每位學生的詳細成績資訊和排名,滿足題目的要求。