光电数鸡算法《java》

一:需求

题目:一条流水线有工位D1,D2,D3…D20,总共20个工位。
每个工位都装有一个光电计数器,每个工位都为本工位的计数减去前一个工位(第一个有数值的工位除外,不计算。)
计算规则:比如D1,D2都有数值,D2计数等于D2-D1为,D1不计算,以此类推。
在这里插入图片描述
现在数据库中存着这些工位计数的明细数据,要求从数据库中查出当天每个工位的光电计数值,并求出每个工位具体的计数值。
注意:D1到D20,20是个工位中有可能有的工位没有数值,数据库明细中没有记录。如数据:D1数值20,D2为80,剩余数据没有了(数据库明细中只有这两个数据)。
解释:数据D1为80,D2为100,D2后面所有工位为空,那么计算后,D1计数值为80,D2为100-80=20,如果哪个工位为空,不再计算,直接为0。

二:代码解答

注意:下面是测试代码,各位看看就好
这个是测试代码:

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;public class GoodIntegers {public static void countWholeDayPairs(List<ShStatisticsDetails> list) {Map<String, Integer> countsMap = new HashMap<>();for (int i = 0; i < list.size() ; i++) {ShStatisticsDetails rs = list.get(i);countsMap.put(rs.getWorkStation(), rs.getChickenNum());}int[] actualCounts = new int[20];int previousCount = 0;for (int i = 0; i < 20; i++) {String currentStation = "D" + (i + 1);int currentCount = countsMap.getOrDefault(currentStation, 0);if (i == 0) {actualCounts[i] = currentCount;  } else {if (currentCount != 0 || countsMap.containsKey(currentStation)) {actualCounts[i] = currentCount - previousCount;previousCount = currentCount;} else {actualCounts[i] = 0;  }}}for (int i = 0; i < 20; i++) {System.out.println("D" + (i + 1) + ": " + actualCounts[i]);}}public static void main(String[] args) {List<ShStatisticsDetails> list = new LinkedList<>();//创建对象,依次放入D1,D2还有数值ShStatisticsDetails s1 = new ShStatisticsDetails();s1.setWorkStation("D2");s1.setChickenNum(80);list.add(s1);ShStatisticsDetails s2 = new ShStatisticsDetails();s2.setWorkStation("D3");s2.setChickenNum(100);list.add(s2);ShStatisticsDetails s3 = new ShStatisticsDetails();s3.setWorkStation("D12");s3.setChickenNum(220);list.add(s3);ShStatisticsDetails s4 = new ShStatisticsDetails();s4.setWorkStation("D18");s4.setChickenNum(260);list.add(s4);ShStatisticsDetails s5 = new ShStatisticsDetails();s5.setWorkStation("D6");s5.setChickenNum(120);list.add(s5);countWholeDayPairs(list);}}

用的ShStatisticsDetails实体类:

public class ShStatisticsDetails
{private static final long serialVersionUID = 1L;/** 机器号 */@Excel(name = "机器号")private String machineNumber;/** 工位 */@Excel(name = "工位")private String workStation;/** 统计数鸡数量(明细) */@Excel(name = "统计数鸡数量", readConverterExp = "明=细")private Integer chickenNum;}

结果

D1: 0
D2: 80
D3: 20
D4: 0
D5: 0
D6: 20
D7: 0
D8: 0
D9: 0
D10: 0
D11: 0
D12: 100
D13: 0
D14: 0
D15: 0
D16: 0
D17: 0
D18: 40
D19: 0
D20: 0

解析:
(1)将查询结果(也就是上面的list集合数据)存储在一个Map中,工位为map的key,光电计数为value,以便后续处理。
如果某个工位没有数据,使用getOrDefault方法给出默认值0。
(2)计算每个工位的实际计数:遍历所有工位,计算每个工位的实际计数。
如果当前工位为第一个,则直接使用其计数值;
否则,计算当前工位与前一个工位的差值。如果某个工位的数据缺失,则设置该工位的计数值为0。
总结:
总体而言并不算太难,加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/31487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在自托管基础设施上使用 GitOps 部署 MinIO

基于MinIO Weaviate Python GitOps探索的见解&#xff0c;本文探讨了如何增强软件部署流程的自动化。 通过将 GitHub Actions 与 Docker Swarm 集成而产生的协同作用&#xff0c;以自托管基础架构的稳健性为基础&#xff0c;标志着 CI/CD 实践的关键进步。这种方法不仅利用了软…

Go语言开发框架GoFly已集成数据可视化大屏开发功能,让开发者只专注业务开发,本文指导大家如何使用

前言 框架提供数据大屏开发基础&#xff0c;是考虑当前市场软件应用有一大部分是需要把业务数据做出大屏&#xff0c;很多政府项目对大屏需求特别高&#xff0c;还有生产企业项目也对大屏有需求&#xff0c;没有提供基础规范的后台框架&#xff0c;在开发大屏需要很多时间去基…

Mentor Xpedition怎么切换中英文界面

1、Mentor Xpedition的Layout界面&#xff0c;切换中英文的方法如下图&#xff1b; 切换英文设置&#xff0c;设置系统环境变量&#xff1a;MGC_PCB_LANGUAGEEnglish&#xff0c;重新打开软件即可切换成中文界面&#xff1b; 如果想要在切换成中文&#xff0c;把标量值改为Chi…

万能引用与完美转发

万能引用与完美转发 万能引用完美转发完美转发的应用场景万能引用的一个小点 万能引用 注意&#xff1a;当&&出现在模板中时&#xff0c;不是右值引用&#xff0c;而是叫万能引用。比如下面的T&& t template<typename T> void PerfectForward(T&&a…

民宿在线预订系统

摘要 随着国家的发展&#xff0c;人们也更加重视自己的业余时间。在特定的假期或休闲时间外出度假已逐渐成为这个时代的趋势。在我国&#xff0c;随着经济的发展和城市居民物质生活水平的提高&#xff0c;旅游业也呈现出越来越受欢迎的趋势。同时随着人口的快速流动&#xff0…

代理网络基础设施 101:增强安全性、速度和可扩展性

编辑代理网络在现代网络架构中发挥着重要作用&#xff0c;充当管理和重新路由数据流的中介。它们处理的数据可以是各种类型&#xff0c;包括搜索查询和潜在的敏感客户信息&#xff0c;这凸显了它们在数据安全方面的作用。 然而&#xff0c;代理的好处不仅限于安全性。它们为用…

人工智能与生物信息组学 || 2. 非编码 RNA 与疾病关联分析 || 2.2 非编码 miRNA 与疾病关联关系预测

非编码 miRNA 与疾病关联关系预测 越来越多的研究表明&#xff0c;一个复杂疾病通常经由多个 miRNA 协同调控&#xff0c;一个 miRNA 通常参与多个疾病的发生发展过程。因此&#xff0c;预测 miRNA 与疾病的关联关系成为一个当前的研究热点。下面我们将探讨一种 miRNA 和疾病关…

技术驱动会展:展位导航系统的架构与实现

随着会展行业的快速发展&#xff0c;大型会展中心面临着如何提升参展者体验、提高招商效率的挑战。针对客户反馈的展馆面积大、展位查找困难等问题&#xff0c;维小帮提出一套智慧会展导航解决方案&#xff0c;旨在通过先进的室内导航技术提升会展中心的运营效率和参展者的满意…

小阿轩yx-MySQL数据库初体验

小阿轩yx-MySQL数据库初体验 数据库简介 21 世纪迈入了“信息爆炸时代”&#xff0c;大量的数据、信息在不断产生&#xff0c;伴随而来的就是如何安全、有效地存储、检索和管理它们。 对数据的有效存储、高效访问、方便共享和安全控制已经成为信息时代亟待解决的问题。 使用…

QThread 与QObject::moveToThread在UI中的应用

1. QThread的两种用法 第一种用法就是继承QThread&#xff0c;然后覆写 virtual void run()&#xff0c; 这种用法的缺点是不能利用信号槽机制。 第二种用法就是创建一个线程&#xff0c;创建一个对象&#xff0c;再将对象moveToThread, 这种可以充分利用信号槽机制&#xff…

canal 服务安装

简介&#xff1a;Canal 是阿里巴巴开源的一个基于 MySQL 数据库增量日志解析的中间件&#xff0c;用于提供准实时的数据同步功能。 准备工作 1.修改配置文件 ,需要先开启 Binlog 写入功能&#xff0c;配置 binlog-format 为 ROW 模式&#xff0c;my.cnf 中配置如下&#xf…

五种实用方法!手把手教你系统盘瘦身

随着电脑的使用时间变长&#xff0c;电脑硬盘会逐渐被各种类型的数据占满&#xff0c;其中系统盘的可用空间也在慢慢变小。这是因为系统在运行过程中会产生大量临时文件和缓存文件&#xff0c;同时&#xff0c;系统的每一次更新升级也都会生成相关的文件夹存放在系统盘中&#…

LeetCode题练习与总结:克隆图--133

一、题目描述 给你无向 连通 图中一个节点的引用&#xff0c;请你返回该图的 深拷贝&#xff08;克隆&#xff09;。 图中的每个节点都包含它的值 val&#xff08;int&#xff09; 和其邻居的列表&#xff08;list[Node]&#xff09;。 class Node {public int val;public L…

阐述一下Golang中defer的原理

基本用法 在Go语言中&#xff0c;defer关键字用于在函数返回前执行一段代码或调用一个清理函数。这对于处理文件关闭、解锁或者返回一些资源到资源池等操作非常有用。 其基本用法如下所示&#xff1a; package mainimport "fmt"func main() {example() }func exam…

如何使用Rekono结合多种工具自动完成渗透测试

关于Rekono Rekono是一款功能强大的自动化渗透测试工具&#xff0c;该工具能够结合其他多种网络安全工具并以自动化的形式完成整个渗透测试过程。在工具运行的过程中所收集到的数据将通过电子邮件或Telegram同时发送给用户&#xff0c;如果需要更加高级的漏洞管理功能&#xf…

浏览器(Browser):轻量级浏览器,高效浏览新体验

在可的哥桌面&#xff08;Codigger Desktop&#xff09;&#xff0c;我们始终秉持创新精神&#xff0c;致力于提供卓越的用户体验。如今&#xff0c;我们激动地宣布一项全新功能的发布——轻量级浏览器Browser。这款浏览器的推出&#xff0c;正是我们对用户体验追求的再次体现&…

设施布置之车间布局优化SLP分析

一 物流分析&#xff08;Flow Analysis&#xff09; 的基本方法 1、当物料移动是工艺过程的主要部分时&#xff0c;物流分析就是工厂布置设计的核心工作&#xff0c;也是物料搬运分析的开始。 2、零部件物流是该部件在工厂内移动时所走过的路线&#xff0c; 物流分析不仅要考虑…

免费ai写作?这三款软件是你的好帮手!

在信息爆炸的今天&#xff0c;自媒体已成为越来越多人展现自我、分享知识的平台。然而&#xff0c;对于许多自媒体创作者来说&#xff0c;写作过程中的灵感枯竭、文笔不畅等问题常常困扰着他们。幸运的是&#xff0c;随着人工智能技术的飞速发展&#xff0c;免费AI写作软件应运…

2024全国高校名单发布,电子版下载!

今天&#xff0c;教育部网站发布了《全国高等学校名单》。截至2024年6月20日&#xff0c;全国高等学校共计3117所&#xff0c;其中&#xff1a;普通高等学校2868所&#xff0c;含本科学校1308所、高职&#xff08;专科&#xff09;学校1560所&#xff1b;成人高等学校249所。本…

任务4.8.3 利用SparkSQL统计每日新增用户

实战概述&#xff1a;利用SparkSQL统计每日新增用户 任务背景 在大数据时代&#xff0c;快速准确地统计每日新增用户是数据分析和业务决策的重要部分。本任务旨在使用Apache SparkSQL处理用户访问历史数据&#xff0c;以统计每日新增用户数量。 任务目标 处理用户访问历史数…