Java复习39(PTA)

出勤统计

分数 15

全屏浏览

切换布局

作者 大数据2021

单位 山东科技大学

某公司现需要统计员工出勤次数,具体要求如下:

输入样例:

Mark Tom
Ivor Mark
Ivor Mark
Jack
end

输入样例解释:

每行表示某天出勤的员工名单,以空格间隔。
end表示输入结束

输出样例:

Mark 3
Ivor 2
Tom 1
Jack 1

输出样例解释:

按出勤天数倒序输出,若出勤次数相同则按输入顺序输出(即先输入的先输出,样例中Tom比Jack先输入,因此先输出Tom)。每名员工占一行,格式为员工名+空格+出勤次数

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

import java.util.*;

/**
 * @author chen
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Map<String, Integer> attendance = new LinkedHashMap<>();//这个Map可以保证输入的顺序

        while (sc.hasNextLine()) {
            String input = sc.nextLine();
            if (input.equals("end")) {
                break;
            }
            String[] employees = input.split("\\s+");
            for (String employee : employees) {
                if (attendance.containsKey(employee)) {
                    attendance.put(employee, attendance.get(employee) + 1);
                } else {
                    attendance.put(employee, 1);
                }
            }
        }

        sc.close();

        // 按出勤次数倒序排序
        //Map<String, Integer> sorted = new LinkedHashMap<>();

        // 创建一个 ArrayList,用于存储原始 Map 的键值对
        List<Map.Entry<String, Integer>> list = new ArrayList<>(attendance.entrySet());

        // 使用自定义比较器按值降序排序
       /* Comparator<Map.Entry<String, Integer>> comparator = new Comparator<>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o2.getValue().compareTo(o1.getValue());
            }
        };*/

        list.sort(new customComparator());


        // 将排序后的键值对添加到新的 LinkedHashMap 中
       /* for (Map.Entry<String, Integer> entry : list) {
            sortedMap.put(entry.getKey(), entry.getValue());
        }
         // 打印结果
        for (Map.Entry<String, Integer> entry : sorted.entrySet()) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
*/
        // 注意下面的代码修改了,原来的代码在此行上面
        for (Map.Entry<String, Integer> entry : list) {
            System.out.println(entry.getKey() + " " + entry.getValue());
        }

    }

}

class customComparator implements Comparator {

    @Override
    public int compare(Object o1, Object o2) {
        Map.Entry<String, Integer> m1 = (Map.Entry<String, Integer>) o1;
        Map.Entry<String, Integer> m2 = (Map.Entry<String, Integer>) o2;
        return m2.getValue().compareTo(m1.getValue());
    }
}

飞思卡尔智能车竞赛是一项备受关注的科技赛事,旨在激发学生的创新和实践能力,尤其是在嵌入式系统、自动控制和机器人技术等关键领域。其中的“电磁组”要求参赛队伍设计并搭建一辆能够自主导航的智能车,通过电磁感应线圈感知赛道路径。本压缩包文件提供了一套完整的电磁组智能车程序,这是一套经过实战验证的代码,曾在校级比赛中获得第二名的优异成绩。 该程序的核心内容可能涉及以下关键知识点: 传感器处理:文件名“4sensor”表明车辆配备了四个传感器,用于获取环境信息。这些传感器很可能是电磁感应传感器,用于探测赛道上的导电线圈。通过分析传感器信号的变化,车辆能够判断自身的行驶方向和位置。 数据采集与滤波:在实际运行中,传感器读数可能受到噪声干扰,因此需要进行数据滤波以提高精度。常见的滤波算法包括低通滤波、高斯滤波和滑动平均滤波等,以确保车辆对赛道的判断准确无误。 路径规划:车辆需要根据传感器输入实时规划行驶路径。这可能涉及PID(比例-积分-微分)控制、模糊逻辑控制或其他现代控制理论方法,从而确保车辆能够稳定且快速地沿赛道行驶。 电机控制:智能车的驱动通常依赖于直流电机或无刷电机,电机控制是关键环节。程序中可能包含电机速度和方向的调节算法,如PWM(脉宽调制)控制,以实现精准的运动控制。 嵌入式系统编程:飞思卡尔智能车的控制器可能基于飞思卡尔微处理器(例如MC9S12系列)。编程语言通常为C或C++,需要掌握微控制器的中断系统、定时器和串行通信等功能。 软件架构:智能车软件通常具有清晰的架构,包括任务调度、中断服务程序和主循环等。理解和优化这一架构对于提升整体性能至关重要。 调试与优化:程序能够在比赛中取得好成绩,说明经过了反复的调试和优化。这可能涉及代码效率提升、故障排查以及性能瓶颈的识别和解决。 团队协作与版本控制:在项目开发过程中,团队协作和版本控制工具(如Git)的应用不可或缺,能够保
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值