关于“CCF考试试题之门禁系统java解题代码”的完整攻略,请看下面的详细讲解。
一、题目背景
这是一道CCF认证考试的试题,要求我们写一段代码实现一个门禁系统。门禁系统需要记录人员的姓名和进出时间,并按照时间排序输出人员进入和离开的记录。
二、解题思路
首先,我们需要定义一个类,来存储每位人员的姓名和进出时间。
class AccessRecord {
String name; // 姓名
String time; // 进出时间
}
然后,我们可以用HashMap来存储每个人进出的时间记录。HashMap的key为人员姓名,value为一个List,用来存储该人员的进出记录。
Map<String, List<AccessRecord>> accessRecords = new HashMap<>();
接下来,我们需要读入每条门禁记录,如果该人员已经在记录中,就加入他的进出时间记录;如果该人员不在记录中,就新建一个记录。
最后,我们按照进出时间排序输出每位人员进出的记录。
三、完整代码
import java.util.*;
class AccessRecord {
String name; // 姓名
String time; // 进出时间
}
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Map<String, List<AccessRecord>> accessRecords = new HashMap<>();
while (sc.hasNext()) {
String line = sc.nextLine();
String[] fields = line.split(" ");
String name = fields[0];
String status = fields[1];
String time = fields[2];
AccessRecord accessRecord = new AccessRecord();
accessRecord.name = name;
accessRecord.time = time;
if (accessRecords.containsKey(name)) {
List<AccessRecord> recordList = accessRecords.get(name);
recordList.add(accessRecord);
} else {
List<AccessRecord> recordList = new ArrayList<>();
recordList.add(accessRecord);
accessRecords.put(name, recordList);
}
}
for (String name : accessRecords.keySet()) {
List<AccessRecord> recordList = accessRecords.get(name);
recordList.sort((r1, r2) -> r1.time.compareTo(r2.time));
System.out.println(name + " "
+ recordList.get(0).time + " "
+ recordList.get(recordList.size()-1).time);
}
}
}
四、示例说明
示例一
输入:
张三 in 08:10
李四 in 08:20
张三 out 09:05
王五 in 10:10
李四 out 13:00
输出:
张三 08:10 09:05
李四 08:20 13:00
王五 10:10 10:10
示例二
输入:
小明 in 08:05
小红 in 08:10
小兰 out 09:10
小丽 in 09:20
小红 out 10:00
小明 out 11:30
小丽 out 12:00
输出:
小丽 09:20 12:00
小明 08:05 11:30
小红 08:10 10:00
小兰 09:10 09:10
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CCF考试试题之门禁系统java解题代码 - Python技术站