4 回答

TA贡献1796条经验 获得超4个赞
像这样的东西应该可以解决问题。之后,您所要做的就是将合同分配给选定的人。
public static void main(String[] args) {
Employee employee1 = new Employee(1, "Bradley", 10);
Employee employee2 = new Employee(2, "Patrick", 70);
Employee employee3 = new Employee(3, "Erin", 50);
Employee employee4 = new Employee(4, "Jim", 4);
Employee employee5 = new Employee(5, "Fredrick", 8);
Employee[] employees = new Employee[] {employee1, employee2, employee3, employee4, employee5};
int employeeWithLeastContractsID = employees[0].getID();
int employeesWithLeastContractsTotal = employees[0].getContracts();;
for (Employee employee : employees) {
if(employee.getContracts() < employeesWithLeastContractsTotal){
employeeWithLeastContractsID = employee.getID();
employeesWithLeastContractsTotal = employee.getContracts();
}
}
System.out.println("Employee ID: "+employeeWithLeastContractsID + "\nEmployee contracts: "+employeesWithLeastContractsTotal);
}

TA贡献1835条经验 获得超7个赞
您可以使用简单的 for 循环来查找具有最少数量合同的员工,如下所示:
int minContract = Integer.MAX_VALUE;
Employee empMin = null;
for (Employee employee : employees) {
if (employee.getNumberOfCurrentlyAssignedContracts() < minContract) {
// swap min and employee if true
empMin = employee;
minContract = empMin.getNumberOfCurrentlyAssignedContracts();
}
}
现在,您有一个对具有最小协定的 employee 对象的引用:
System.out.println(empMin);
如果您使用的是java-8,那么您可以简单地执行以下操作:
Employee empMin = Arrays.stream(employees)
.min((e1, e2) ->
e1.getNumberOfCurrentlyAssignedContracts() -
e2.getNumberOfCurrentlyAssignedContracts())
.get();

TA贡献1942条经验 获得超3个赞
怎么样:
Employee minEmployee = Arrays.stream(employees) .sorted(Comparator.comparing(Employee::getNumberOfCurrentlyAssignedContracts)) .findFirst().get();

TA贡献1891条经验 获得超3个赞
你可以做这样的事情
Employee ref = employees[0];
int min = ref.numberOfCurrentlyAssignedContracts;
for (Employee employee : employees) {
if(min>employee.numberOfCurrentlyAssignedContracts){
min = employee.numberOfCurrentlyAssignedContracts;
ref = employee;
}
}
然后做任何你想做的事情ref
当然,使用一个会容易得多ArrayList
添加回答
举报