前言:小小扎马,让我明白好的编程思路,能够让你事半功倍,而如果思路偏了,那么给你带来的痛苦可是要命了。
今天在做一个项目的时候,需要为用户随机生成一个四位编号,编号可以选择区间,并且可以跳过指定数字,另外不能和数据库中已存在的编码重复。刚开始的时候,我的做法是先依据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”。 该项目应在...
DCM与PFC融合的CRM混合模式创新实践,DCM CRM混合模式PFC ,DCM; CRM混合模式; PFC,DCM与PFC的混合模式在CRM系统中的应用
基于Dijkstra算法的路径规划Matlab代码:读取黑白色地图并实现图像上的路径规划示例,读取黑白色地图,在图片上进行路径规划matlab代码 路径规划算法基于读图识别的Dijkstra算法 随意设置坐标,规划路径 示例如下 ,读取地图; 路径规划算法; Dijkstra算法; 坐标设置; 规划路径,基于Dijkstra算法的Matlab黑白色地图路径规划代码
matlab实现LSTM时序预测完整程序+数据
968a658a40c897eb4452d8718cf0f8e6.part6
Matlab Simulink下的LLC开关电源仿真技术探究与实践,Matlab Simulink仿真,LLC开关电源仿真 ,核心关键词:Matlab Simulink仿真; LLC开关电源仿真; 电源仿真,Matlab Simulink下的LLC开关电源仿真研究
matlab实现RF时序预测完整程序+数据
FLAC3D水力切顶角度研究:水力压裂代码的实践与参考指南,FLAC3d不同水力切顶角度,水力压裂代码,可以做参考 ,FLAC3d; 水力切顶角度; 水力压裂代码; 参考;,FLAC3d水力压裂角度控制与代码解析
基于分层滤波技术的冲击噪声检测与去除算法.pdf
"COMSOL模拟技术:等离子体与热流耦合的深度探索",comsol等离子体,热流耦合 ,comsol等离子体; 热流耦合; 仿真模拟; 物理建模,"COMSOL等离子体热流耦合模拟"
基于SSA与DBN的多输入单输出预测模型:麻雀优化算法在Matlab环境下的实现与效果评估,麻雀优化算法SSA结合DBN做多输入单输出预测模型,要求数据是excel替数据就可以用。 程序语言是matlab,需求最低版本为2020及以上。 程序可以出真实值和预测值对比图,线性拟合图,可打印多种评价指标。 PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替就可以得到自己满意的效果。 3.程序后无原理讲解。 ,核心关键词:麻雀优化算法SSA; DBN多输入单输出预测模型; Matlab; 2020版及以上; 真实值和预测值对比图; 线性拟合图; 评价指标; 数据替换; 独一无二的数据; 无原理讲解。,基于SSA-DBN的Excel数据多输入单输出预测模型(Matlab 2020+版)
LDPC编译码技术:信道编译码实现、规格与算法可定制的探索,LDPC编译码实现 信道编译码 LDPC码编译码极其识别 编码规格DVBS2 IEEE802.11n IEEE802.16e 译码算法 置信传播 和积算法 最小和 可定制 ,LDPC编译码实现; 信道编译码; LDPC码识别; 编码规格(DVBS2; IEEE802.11n; IEEE802.16e); 译码算法(置信传播; 和积算法; 最小和); 可定制。,LDPC编译码技术:实现、规格与算法详解
基于三菱PLC的3×4立体仓库组态监控系统设计与实现,6#基于三菱PLC组态王3×4立体仓库组态监控系统 ,基于三菱PLC; 组态王; 立体仓库; 3×4组态监控系统; 立体仓库组态监控,基于三菱PLC的立体仓库组态监控系统
冻融循环数值仿真:基于Comsol的真水热力三场耦合分析降雨边坡稳定性周期性变化及热膨胀效应的达西定律应用,冻融循 环数值仿真 comsol 真水热力三场耦合 采用达西定律与热膨胀接口,可分析降雨边坡在冻融到解冻过程的稳定性周期性变化 ,冻融循环;数值仿真;Comsol;真水热力三场耦合;达西定律;热膨胀接口;降雨边坡稳定性;周期性变化,"冻融循环仿真研究:真水热力三场耦合与周期性稳定性分析"
声发射定位图:MATLAB制作的长方体三维立体展示技术,2D与3D个性化呈现解析,声发射定位图(长方体),MATLAB制作,2D 3D个性化展示。 ,声发射定位图; 长方体模型; MATLAB制作; 2D 3D展示; 个性化展示,MATLAB制作声发射定位图:2D/3D个性化展示长方体图
高斯光束生成与传输模拟的Matlab计算方法研究,高斯光束生成传输matlab计算 ,高斯光束; 生成; 传输; MATLAB计算;,高斯光束生成与传输的Matlab计算
,500kW储能变流器(PCS) 采用T型三电平模块,结构三维、控制电路、驱动电路,全部的BOM,型式试验报告等全部资料。 没有程序源码,本交付的资料与本描述一致,未提及的可能没有。