Employee Department Salary Level Query
題目說明
請撰寫一個程式,由使用者輸入五位員工的部門薪資資料,每位員工都有三個欄位,分別是姓名、部門名稱、薪資等級,
輸入完畢之後,指定某個要篩選的部門名稱、以及某個薪資等級,由程式依照這個篩選條件,從五位員工中篩選出在該指定部門獲得指定薪資等級的員工,最後印出這幾位員工的姓名(若有多個符合條件的員工姓名,則按照輸入資料的順序依次輸出。)
如果沒有符合條件的員工,則僅輸出Not found
訊息。 可以利用以下的參考程式碼作為基礎,做小幅度的修改(可能在10
行以內),讓它可以滿足以上需求。
若修改正確,當程式獲得以下每一組範例輸入時,應該產生該範例的對應輸出結果。
參考程式碼
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class MyProgram {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
ArrayList<HashMap<String, String>> records = EmployeeCollector.getInputData(scanner, 5);
// Get the department name and salary level from the user
String departmentName = scanner.next();
String salaryLevel = scanner.next();
scanner.close();
// Create an instance of EmployeeAnalyzer and filter records
EmployeeAnalyzer analyzer = new EmployeeAnalyzer(records);
ArrayList<String> names = analyzer.filterRecords(departmentName, salaryLevel);
// Print the names of employees with the specified salary level in the specified department
if (names.isEmpty()) {
System.out.println("Not found");
} else {
for (String name : names) {
System.out.println(name);
}
}
}
}
class EmployeeCollector {
// Static method to get input data from the user
public static ArrayList<HashMap<String, String>> getInputData(Scanner scanner, int numberOfRecords) {
ArrayList<HashMap<String, String>> records = new ArrayList<>();
for (int i = 0; i < numberOfRecords; i++) {
HashMap<String, String> record = new HashMap<>();
String name = scanner.next();
String department = scanner.next();
String salaryLevel = scanner.next();
record.put("name", name);
record.put("department", department);
record.put("salaryLevel", salaryLevel);
records.add(record);
}
return records;
}
}
class EmployeeAnalyzer {
private ArrayList<HashMap<String, String>> records;
// Constructor to initialize records
public EmployeeAnalyzer(ArrayList<HashMap<String, String>> records) {
this.records = records;
}
}
輸入
輸入共 6 行,格式如下:
前 5 行:每行輸入一位員工的資料,由「姓名」、「部門名稱」、「薪資等級」三個字串組成,以空格分隔。
第 6 行:輸入要篩選的部門名稱與薪資等級,同樣以空格分隔。
輸出
若有符合篩選條件的員工,依照輸入順序,每行輸出一位員工的姓名。
若沒有任何員工符合條件,僅輸出一行 Not found
。
範例輸入#1
david engineering senior
lisa marketing junior
mike engineering senior
sarah finance middle
tom marketing junior
engineering senior
範例輸出#1
david
mike
範例輸入#2
mary finance senior
jack it middle
lily finance junior
kevin it senior
anna marketing middle
finance middle
範例輸出#2
Not found
Comments