Remove Clubs From Student List
題目說明
請撰寫一個程式,先讀取五組字串,每個字串包含一到多個學生姓名,學生姓名之間以逗號分隔,學生姓名可能重複。
程式應該將每一組存入HashSet
集合中,使得每一組都僅保留不重複的學生姓名。再將這些集合存入一個ArrayList
陣列中。
程式再讀取第六個字串,表示一個指定的學生姓名,然後檢查陣列中的每個集合,若某個集合包含指定學生,則從陣列中移除該集合。
如果最後陣列不是空的,就輸出第一個集合和最後一個集合,輸出時會依照學生姓名排序(已實作在參考程式碼中的displaySortedMembers
函數)。如果最後陣列是空的,就僅輸出Empty
字樣。
可以利用以下的參考程式碼作為基礎,做小幅度的修改(可能在10
行以內),讓它可以滿足以上需求。
若修改正確,當程式輸入以下範例輸入時,應該產生其對應輸出結果。
參考程式碼
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
public class ClubManager {
public static void main(String[] args) {
ArrayList<HashSet<String>> clubList = new ArrayList<>();
// 讀取社團成員資料,用逗號分隔,存入HashSet
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
HashSet<String> members = new HashSet<>();
for (String member : scanner.nextLine().split(",")) {
members.add(member);
}
clubList.add(members);
}
// 讀取要退出的學生姓名
String studentToRemove = scanner.nextLine();
// 顯示剩餘社團清單的第一個和最後一個社團
// HashSet以字串形式顯示,成員按字母順序排列
if (clubList.isEmpty() == false) {
displaySortedMembers(clubList.get(0));
displaySortedMembers(clubList.get(clubList.size() - 1));
}
else {
System.out.println("Empty");
}
}
public static void displaySortedMembers(HashSet<String> members) {
ArrayList<String> sortedMembers = new ArrayList<>(members);
sortedMembers.sort(null);
System.out.println(String.join(",", sortedMembers));
}
}
輸入
先輸入五組字串,再輸入第六個字串(表示一個指定學生)
輸出
輸出陣列中不包含該指定學生姓名的「第一個集合和最後一個集合」。
如果最後陣列是空的,就僅輸出Empty
字樣。
範例輸入#1
Tom,Jerry,Mike
Sam,Rita,Paul
Luke,Nina,Oscar
Ben,Quinn,Steve
Tom,Mark,Nancy
Tom
範例輸出#1
Paul,Rita,Sam
Ben,Quinn,Steve
範例輸入#2
Alice,Bob,Charlie
David,Alice,Frank
Grace,Alice,Henry
Alice,Jack,Kate
Alice,Lily,Mike
Alice
範例輸出#2
Empty
Comments