Employee Department Salary Level Query


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type

題目說明

請撰寫一個程式,由使用者輸入五位員工的部門薪資資料,每位員工都有三個欄位,分別是姓名、部門名稱、薪資等級,
輸入完畢之後,指定某個要篩選的部門名稱、以及某個薪資等級,由程式依照這個篩選條件,從五位員工中篩選出在該指定部門獲得指定薪資等級的員工,最後印出這幾位員工的姓名(若有多個符合條件的員工姓名,則按照輸入資料的順序依次輸出。)
如果沒有符合條件的員工,則僅輸出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

There are no comments at the moment.