用JAVA编写某公司现需要统计员工出勤次数,具体要求如下: 输入样例: Mark Tom Ivor Mark Ivor Mark Jack end 输入样例解释: 每行表示某天出勤的员工名单,以空格间隔。 end表示输入结束 输出样例: Mark 3 Ivor 2 Tom 1 Jack 1 输出样例解释: 按出勤天数倒序输出,若出勤次数相同则按输入顺序输出(即先输入的先输出,样例中Tom比Jack先输入,因此先输出Tom)。每名员工占一行,格式为员工名+空格+出勤次数
时间: 2024-03-22 21:38:30 浏览: 117
好的,这是一个简单的统计出勤次数的需求,可以使用Java的HashMap来实现。以下是示例代码:
```java
import java.util.*;
public class AttendanceCounter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> attendanceMap = new HashMap<>();
while (scanner.hasNext()) {
String line = scanner.nextLine();
if (line.equals("end")) {
break;
}
String[] employeeNames = line.split(" ");
for (String name : employeeNames) {
attendanceMap.put(name, attendanceMap.getOrDefault(name, 0) + 1);
}
}
List<Map.Entry<String, Integer>> attendanceList = new ArrayList<>(attendanceMap.entrySet());
attendanceList.sort((e1, e2) -> e2.getValue() - e1.getValue());
for (Map.Entry<String, Integer> entry : attendanceList) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
```
代码解释:
1. 首先创建一个 HashMap 来存储员工名字和出勤次数的映射关系。
2. 然后使用 while 循环不断读取用户输入,直到输入 end 为止。
3. 对于每一行输入,使用 split 方法将员工名字拆分出来,并遍历拆分出来的员工名字。
4. 对于每一个员工名字,使用 getOrDefault 方法从 HashMap 中取出对应的出勤次数并加一,然后再将其存回 HashMap 中。
5. 循环结束后,将 HashMap 中的映射关系转化为 List,并按照出勤次数倒序排序。
6. 最后遍历排序后的 List,并输出每个员工的名字和出勤次数。
希望这个示例代码能够帮到您。
阅读全文