小小扎马-Java生成指定范围和跳过指定数字的代码
前言:小小扎马,让我明白好的编程思路,能够让你事半功倍,而如果思路偏了,那么给你带来的痛苦可是要命了。
今天在做一个项目的时候,需要为用户随机生成一个四位编号,编号可以选择区间,并且可以跳过指定数字,另外不能和数据库中已存在的编码重复。刚开始的时候,我的做法是先依据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;}
总结:编程是一门艺术,精致的代码总让你兴奋不已。
小小扎马-Java生成指定范围和跳过指定数字的代码相关推荐
- 【笔记】微信开发者工具自定义编译模式(编译时,携带 指定参数 直接跳转 指定页面)
文章目录 问题 解决 问题 发现这个神奇功能之前,一般都是在 app.json 下 pages 里将当前页面置顶,参数写死... 或是,什么都不做,繁琐的一级一级的点,直到从首页进入需要调试页面... ...
- java 生成印章源码_java代码生成指定的公章和私章,并且解决服务器不能回显文字的问题...
因项目需求所需,需要用java根据字段生成公章,在这里特别感谢大佬们贡献的代码,由衷的表示感谢,我充分发挥了搬砖的作用,因为在中间遇到了服务器上没有字的问题,故写下次文章,作为记录,希望能帮助到童鞋们 ...
- java生成随机密码,包含大小写字母,数字,特殊字符等
public static String generatePwd() {// 生成指定长度(2)的大写字母String upperCaseLetters = RandomStringUtils.ran ...
- 第一行代码 java 光盘_如何买卖光盘附带的数字电影代码
第一行代码 java 光盘 At the moment, we're in a transition to an all-digital world of entertainment, and we' ...
- java生成任意整数随机数(任意指定范围)
首先要说的是:很多人分不清临界值是否取得到! 第一种办法,Math.random() 他的范围是0.0与1.0之间的伪随机数字,包括0不包括1(什么是伪随机?在本文章最下面有简单的介绍). 在这里我举 ...
- JAVA生成高强度密码(包含随机数字+随机英文大小写)
在这个小代码中支持密码长度的自选 import java.util.Random; import java.util.Scanner;// 在本文件中利用随机数+ASCII值码来实现Authentic ...
- java 生成对称密钥_Java中创建对称密钥的代码
1 加密 public static byte[] jiami() throws Exception { //密钥生成器 KeyGenerator key=KeyGenerator.getInstan ...
- Java 找出四位数的所有吸血鬼数字 基础代码实例
/** * 找出四位数的所有吸血鬼数字 * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序. * 以两个 ...
- 微信唤起外部浏览器打开指定链接 微信跳转下载APP实现代码
推广分析 通过扫描二维码下载APP已成为一个大家惯用且非常方便的下载方式了,微信也成为扫描二维码重要的工具,很多商家也是熟知这一点,所以纷纷选择微信推广.然而在我们使用微信推广的时候,经常会遇到app ...
最新文章
- [bbk4966]第70集 第8章 -性能维护 01
- 你选的那些创业方向 可能正在毁掉你!
- Java基础篇:内部类详解
- redis setnx 分布式锁_Redis 分布式锁PHP
- 微软OOXML正式成为国际标准 更名为OXML
- 使用cmake时发生not providing *.cmake in CMAKE_MODULE_PATH类错误的解决办法
- android dialog 隐藏状态栏_Flutter-最近搞了个项目-启动页Splash,Navigator.pop无法关闭Dialog...
- 国内少有的Flutter干货分享:Flutter的原理及美团的实践!
- 如何将其他注册商处的域名申请转出并转入阿里云(图文教程)
- 怎么用计算机弹春天在哪里,春天在哪里
- vlan是什么?如何划分vlan?如何实现vlan?使用vlan的优点!
- Photoshop中的标尺、参考线
- JavaScript 判断是否是数字 isFinite() Number.isFinite()
- 修改windows自带录音机录音时间方法
- 从零开始的ZYNQ学习(基于矿卡EBAZ4205)(一)
- 火影忍者379在线观看
- APIView 怎么写?
- java读取 png_JAVA如何操作PNG图片
- win10软件拒绝访问删不掉_win10结束进程时拒绝访问的处理办法
- ANDROID物联网开发从入门到实战附源码