前言:小小扎马,让我明白好的编程思路,能够让你事半功倍,而如果思路偏了,那么给你带来的痛苦可是要命了。
今天在做一个项目的时候,需要为用户随机生成一个四位编号,编号可以选择区间,并且可以跳过指定数字,另外不能和数据库中已存在的编码重复。刚开始的时候,我的做法是先依据0-9生成一个随机的四位数字,然后再判断该数字是否在指定范围,并且是否包含有指定数字等等,最后发现,这个想法有很大的漏洞,如果指定范围为0-1,我的while写法要跑上很大一阵功夫。
那接下来我不知道突然一个想法浮现在脑海,便产生了以下代码
/** * 根据开始编号、结束编号、带四标记、已存在的会员编号,生成四位的序号 * * @param startnumStr * @param endnumStr * @param containsSomeCharFlag * @param existNumStrs * @param somenum * @return */ public static String generateNum(String startnumStr, String endnumStr, boolean containsSomeCharFlag, List<String> existNumStrs, String somenum) { // 创建一个数组 List<String> list = new ArrayList<String>(); int startnum = 0; int endnum = 9999; // 开始数字 if (startnumStr != null && !"".equals(startnumStr)) { startnum = Integer.parseInt(startnumStr); } // 结束数字 if (endnumStr != null && !"".equals(endnumStr)) { endnum = Integer.parseInt(endnumStr); } // 如果说用户指定的开始数字比结束数字还大,则返回错误信息 if (startnum > endnum) { return "错误:请重新指定编号的范围"; } for (int i = startnum; i <= endnum; i++) { String num = getZeroStrOfLen(4, String.valueOf(i)); // 如果i不存在,那么加入 if (!existNumStrs.contains(num)) { // 假如不包含某个数字 if (!containsSomeCharFlag) { if (num.indexOf(somenum) == -1 ) { list.add(num); } } else {// 如果包含某个数字,则不需要判断 list.add(num); } } } // 此时生成的列表中,就包含了用户需要编号,那么随机一个 int index = new Random().nextInt(list.size()); return list.get(index); }
以上代码的思路,就是依据条件生成随机数的集合,然后再随机一个下标取出对应数据。当然不知道这个方法是不是最优,如果有朋友有更加简洁的方法,可以写出来,我来拜读一下。
还有一个方法的代码也贴出来吧,对字符串的补零操作
/** * 对字符串进行补零. * * @return */ public static String getZeroStrOfLen(int len, String temp) { String result = ""; if (temp != null) { if (temp.length() == len) { result = temp; } else if (temp.length() > len) { // 取后几位 result = temp.substring(temp.length() - len); } else { for (int i = 0; i < len - temp.length(); i++) { result += "0"; } result += temp; } } return result; }
总结:编程是一门艺术,精致的代码总让你兴奋不已。
相关推荐
使用Spark Graph库和Spark MLlib的大规模监督链接预测 贡献者 1,阿维纳什·兰詹(Avinash Ranjan) ...1.项目在功能上分为多个阶段,每个功能需求都有独立的代码(模块)和依赖项。 (Preprocess_input_text_to
公元前218年至前202年的第二次布匿战争中,尽管汉尼拔在前期取得了一系列胜利,但最终罗马在扎马之战中彻底击败了他,确立了罗马在地中海地区的主导地位。 这些历史事件不仅描绘了意大利历史的演进,也反映了古代...
通过对黑河流域 3 个水文控制站( 莺落峡,祁连山及扎马什克) 径流量进行率定与验证后发现: CMADS + SWAT 模式径流输出结果总体优于 CFSR + SWAT 模式及 TWS + SWAT 模式的模拟结果,利用 CMADS + SWAT 模式亦可很好...
扎马萨马午餐订购应用程序正面跑法: 在本地机器上安装 nodeJs(和 npm - 节点包管理器) 转到前端文件夹在控制台中输入“npm install”。 它将获取所有必要的依赖项。 在控制台中输入“npm start”。 该项目应在...
物业公司绩效考核制度
2025最新小学数学义务教育课程标准(2022年版)必考题库附含答案.docx
1、文件内容:SDL-1.2.15-17.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/SDL-1.2.15-17.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
软件研发绩效考核办法
FactoryIO液位PID仿真程序入门指南:使用TIA Portal V15与FactoryIO 2.4.0的梯形图编程,factoryio液位PID仿真程序 使用简单的梯形图编写,通俗易懂,起到抛砖引玉的作用,比较适合有动手能力的入门初学者。 软件环境: 1、西门子编程软件:TIA Portal V15(博图V15) 2、FactoryIO 2.4.0 内容清单: 1、FactoryIO中文说明书+场景模型文件 2、博图V15PLC程序(源码)。 ,核心关键词:FactoryIO液位PID仿真程序; 梯形图编写; 通俗易懂; 入门初学者; 西门子编程软件; TIA Portal V15(博图V15); FactoryIO 2.4.0; FactoryIO中文说明书; 场景模型文件; PLC程序(源码)。,"FactoryIO液位控制:梯形图PID仿真程序"
# 微信自动锁定:您的隐私保护神器在当今数字化时代,隐私安全日益重要。微信作为我们日常沟通和信息交流的重要工具,其中的隐私保护不容忽视。为了满足大家对微信隐私保护的需求,我们特别推出了“微信自动锁定”软件。 1. **自动锁定**:这是软件的核心功能。当您在使用微信的过程中,若3分钟内没有任何鼠标和键盘操作,软件会自动锁定微信。这一功能有效防止了他人在您离开电脑时,未经授权访问您的微信,保护您的聊天记录、个人信息等隐私不被泄露。 2. **便捷的托盘操作**:程序启动后,会自动收纳到电脑右下角的托盘中,不占用过多屏幕空间,也不会干扰您的正常工作和使用。当您需要退出程序时,只需右键点击托盘图标,选择“退出”即可,操作简单便捷。 3. **灵活的托盘图标设置**:托盘图标支持两种设置方式。您可以选择指定路径的图片作为托盘图标,按照自己的喜好进行个性化设置;也可以使用base64编码的图标,满足不同用户的多样化需求。
【作品名称】:基于Python 的BP神经网络的高频金融时间序列分析【毕业设计】 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: This project includes three sections. GetData Data crawling. Responsible for crawling and processing the high frequency data of stock transcation in recent years. And the data format would be converted to an appropriate format. predict Core algorithm. Implement the Back Propagation Neural Networks 【资源声明】:本资源作为“参考资料”而不是“定制需求”,代码只能作为参考,不能完全复制照搬。需要有一定的基础看懂代码,自行调试代码并解决报错,能自行添加功能修改代码。
1、文件内容:PackageKit-gtk3-module-1.1.10-2.el7.centos.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/PackageKit-gtk3-module-1.1.10-2.el7.centos.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
三相PWM整流器的双闭环控制与C语言实现的PI控制及SVPWM模块技术解析,三相PWM整流器,采用双闭环控制,用C语言实现PI控制,SVPWM等模块。 ,核心关键词:三相PWM整流器;双闭环控制;C语言实现;PI控制;SVPWM模块;,三相PWM整流器双闭环PI控制与SVPWM模块实现
反激式开关电源仿真研究:电压外环PI控制下12V输出电压及MATLAB建模分析,反激式开关电源,反激仿真电力电子仿真,电压外环PI控制,输入电压18-75V,输出电压12V,输出功率12W,MATLAB simulink软件。 ,核心关键词:反激式开关电源; 反激仿真; 电力电子仿真; 电压外环PI控制; 输入电压18-75V; 输出电压12V; 输出功率12W; MATLAB Simulink软件。,基于反激式开关电源的电力电子仿真与电压外环PI控制研究
电赛小车源码 常规C/C++编程 【核心代码】 ├── 2003智能小车(全国大学生电子设计竞赛) │ ├── BrainCar.M51 │ ├── BrainCar.Opt │ ├── BrainCar.Uv2 │ ├── BrainCar.hex │ ├── BrainCar.lnp │ ├── BrainCar.plg │ ├── BrainCar_Opt.Bak │ ├── BrainCar_Uv2.Bak │ ├── Config.h │ ├── Follow.LST │ ├── Follow.OBJ │ ├── Follow.c │ ├── Follow.h │ ├── IOCfg.LST │ ├── IOCfg.OBJ │ ├── IOCfg.c │ ├── LightDTC.LST │ ├── LightDTC.OBJ │ ├── LightDTC.c │ ├── LightDTC.h │ ├── MetalDTC.LST │ ├── MetalDTC.OBJ │ ├── Met
1、文件内容:alsa-plugins-speex-1.1.6-1.el7.rpm以及相关依赖 2、文件形式:tar.gz压缩包 3、安装指令: #Step1、解压 tar -zxvf /mnt/data/output/alsa-plugins-speex-1.1.6-1.el7.tar.gz #Step2、进入解压后的目录,执行安装 sudo rpm -ivh *.rpm 4、安装指导:私信博主,全程指导安装
值得借鉴的IT部门绩效考核范文
双端VSC(三阶)MMC平均值模型四阶小信号模型代码解析与阶跃验证,双端VSC(3阶) MMC平均值模型(4阶)小信号模型代码,小信号阶跃验证代码 ,核心关键词:双端VSC; 3阶; MMC平均值模型; 4阶; 小信号模型代码; 小信号阶跃验证代码;,双端VSC 3阶小信号模型代码及4阶MMC平均值阶跃验证研究
P020250120583214598713 2.et
23 采购部门KPI指标(结合BSC)