1

こんにちは、Employee と Department の 2 つのクラスがあります。私のメイン関数は、従業員の名前、給与、部門、および役職で満たされた .txt ファイルを読み取ります。私の Employee クラスは単なるゲッターとセッターです。従業員を表すために配列リストのリストが作成されますが、各部門の最低給与を見つける方法がわかりません。最高給与を見つけるために、私は自分の学科のクラスでこれを行いました。

public class Department {
    String dept;
    List<Employee> employees;
    double minSal;
    double maxSal;

    public void addEmployee(Employee emp){
        maxSal = 0.0;
        if (maxSal < emp.getSalary()) {
            maxSal = emp.getSalary();
        }

しかし、最低賃金を得る方法がわかりません。私のアイデアは、各部門の従業員の 1 人の給与を取得し、それを出発点として使用することでした。

if (minSal > emp.getSalary()) {
    minSalary = emp.getSalary();
}

しかし、私は何をすべきかわからないことに気づきました。これについて何か助けを得ることができますか?

4

4 に答える 4

2
if (employees.isEmpty() {
   return null; // No minimum salary available.
}
int minSalary = Integer.MAX_INT;
for (Employee e : employees) {
    minSalary = Math.min(minSalary, e.getSalary();
}
return minSalary;
于 2013-04-25T01:53:57.637 に答える
2

各部門の最低給与のリストが必要なようですが、他の回答は部門全体の最低給与を示しているだけのようです。私が正しく、部門ごとに低い給与が必要な場合は、リストをループして、次のように部門ごとにマップに配置することをお勧めします。

public Map<String, Double> getLowSalaries(List<Employee> employees) {
    Map<String, Double> lowSalaries = new HashMap<String, Double>();

    for(Employee employee : employees) {
        Double lowSalaryForDept = lowSalaries.get(employee.getDept());

        if(lowSalaryForDept == null || lowSalaryForDept < employee.getSalary()) {
            lowSalaries.put(employee.getDept(), employee.getSalary());
        }
    }
    return lowSalaries;
}
于 2013-04-25T02:01:38.957 に答える
0

Double.POSITIVE_INFINITYで表現できるどの数よりも大きい特別な数 がありdoubleます。最小限の検索の開始点として使用できます。

double minSalary = Double.POSITIVE_INFINITY;
...
if (minSal > emp.getSalary()) {
    minSalary = emp.getSalary();
}

もう 1 つの一般的なトリックはminSalary、リストの最初の要素に設定してから、2 番目の要素から検索を開始することです。

于 2013-04-25T01:52:49.290 に答える
0

を使用したバリエーションを次に示しIteratorます。

public double minSalary(List<Employee> employees) {
    if (employees == null || employees.isEmpty()) {
        throw new IllegalArgumentException();
    }

    Iterator<Employee> iterator = employees.iterator();
    double min = iterator.next();
    while (iterator.hasNext()) {
        min = Math.min(min, iterator.next().getSalary());
    }

    return min;
}
于 2013-04-25T01:57:22.153 に答える