嗨所以我有两个班级员工和部门。我的主要功能是读取一个填充了员工姓名,工资,部门和职位的.txt文件。我的员工课程只是吸气者和制定者。 arraylists列表代表员工,我不知道如何找到每个部门的最低工资。为了找到我在部门课上做到的最高薪水。
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();
}
但我不知道如何获得最低工资。我的想法是获得每个部门的一名员工的薪水,并将其作为
的起点if (minSal > emp.getSalary()) {
minSalary = emp.getSalary();
}
但我意识到我不知道该怎么做。我可以帮忙解决这个问题吗?
答案 0 :(得分: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;
答案 1 :(得分:2)
听起来你想要一个每个部门最低工资的清单,看起来其他答案只是给你跨部门的最低工资。如果我是正确的你想要部门的低工资你可能只想循环通过列表并将它们放在dept的地图中,如下所示:
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;
}
答案 2 :(得分:0)
有一个特殊号码Double.POSITIVE_INFINITY
,它大于double
代表的任何数字。您可以将其用作搜索最小值的起点:
double minSalary = Double.POSITIVE_INFINITY;
...
if (minSal > emp.getSalary()) {
minSalary = emp.getSalary();
}
另一个常见的技巧是将minSalary
设置为列表的第一个元素,然后从第二个元素开始搜索。
答案 3 :(得分: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;
}