package com.eidlink.util;
import java.util.concurrent.atomic.AtomicInteger;public class IdGenerator {/*** @param len* @param i* @param driver 上一个三位数*/public static void sn(int len,Integer i,String driver){String dr = "";AtomicInteger z = new AtomicInteger(i);z.getAndIncrement();if(z.toString().length()>(len-(driver!=null?driver.length():0))){dr = driverCheck(driver,len);//如超出限定长度并字母都为Z的时候,限定长度加1,dr重新开始,默认为空if(dr.equals(".N")){len++;System.out.println("超出范围");dr = "";}else{z.set(1);}}else{dr = driver;}if(dr.length()==len){System.out.println(dr);}else{System.out.println(String.format("%0"+(len-dr.length())+"d", z.intValue())+dr);}}/*** 字母有效检查* 1.检查字母是否都为Z* 2.检查字母长度* @param driver* @param len* @return*/public static String driverCheck(String driver,int len){char[] charArray = driver.toCharArray();AtomicInteger z = new AtomicInteger(0);for (char c : charArray) {if (c == 'Z') {z.getAndIncrement();}}if (z.intValue() == driver.length() && z.intValue() == len) {///如所有字母都为Z,并且长度达到限定长度,返回.Nreturn ".N";} else if (z.intValue() == driver.length() && z.intValue() < len) {return driver("@" + driver);} else {//以上两个条件都不满足,则直接递增return driver(driver);}}/*** 字母递增* @param driver* @return*/public static String driver(String driver){if(driver!=null && driver.length()>0 ){char[] charArray = driver.toCharArray();AtomicInteger z = new AtomicInteger(0);for(int i = charArray.length-1;i>-1;i--){if(charArray[i]=='Z'){z.set(z.incrementAndGet());}else{if(z.intValue()>0 || i==charArray.length-1){AtomicInteger atomic = new AtomicInteger(charArray[i]);if (charArray[i]=='9' &&charArray[i-1]=='9'&&charArray[i-2]=='9') {charArray[i] = '0';charArray[i - 1] = '0';charArray[i - 2] = (char) atomic.addAndGet(8);}else if( charArray[i]> charArray[i-1] && charArray[i]=='9') {charArray[i] = '0';charArray[i-1]= ++charArray[i-1];}else if(charArray[i]== '9'&& charArray[i-1]=='9' && charArray[i-2]!='Z') {charArray[i] = '0';charArray[i - 1] = '0';if (charArray[i-2]=='Z'){charArray[i-1] = (char) atomic.addAndGet(8);}int ascll =(int) charArray[i-2];ascll=ascll+1;charArray[i-2] =(char)ascll;z.set(0);}else if (charArray[i]== '9'&& charArray[i-1]=='9'  && charArray[i-2]=='Z'){charArray[i] = '0';charArray[i - 1] = (char) atomic.addAndGet(8);}else if (charArray[i]== '9'&& charArray[i-1]=='Z'  && charArray[i-2]=='Z'){charArray[i] = (char) atomic.addAndGet(8);}else if(charArray[i]== '9'){charArray[i] = '0';int ascll =(int) charArray[i-1];ascll=ascll+1;charArray[i-1] =(char)ascll;z.set(0);}else {charArray[i]=(char) atomic.incrementAndGet();z.set(0);}}}}return String.valueOf(charArray);}else{return "A";}}public static void main(String[] args) {sn(3, 999, "A0");}}

三位数自动递增生成编号 数字 字母 组合相关推荐

  1. 三位数自动递增编号函数_Excel单元格自动填充编号、序列、18位长数字与数字+字母+数字...

    在 Excel 中,用拖动的办法可以实现单元格自动填充编号,即数字会自动递增,既可以向下拖也可以向右拖,向那里拖,数字往那递增:这个方法适用于自动填充短编号,如果要自动填充长序列,再用此方法就不好实现 ...

  2. 三位数自动递增编号函数_EXCEL中序号自动增加(如何避免隐藏行)?excel自动填充序号...

    excel表格中如何自动顺序填充序号 首先打开Excel 2007,创建如图所内容.当家也可以根据自己的实际情选择练习的内容.在此为了上的需要,特制作两列,第一列就"序号",第二列 ...

  3. 三位数自动递增编号函数_excel中如何使用SUBTOTAL函数实现自动连续四位数编号...

    在一些特殊的表格中,有些时候需要指定数位的连续编号,比方说,自动实现四位数编号,那么该如何进行操作呢?下面就分享使用SUBTOTAL函数实现的具体过程,各位参考. 启动Excel2013,打开一份需要 ...

  4. 使用 Python 生成类数字字母混合验证码图片

    分析 首先是要生成含有数字字母的字符串 然后创建画布,并且随机填充画布的颜色 最后将字符画上去,为了保证画上去的字符不同色,需将这些字符保存为一个列表通过多次画上去,期间要随机设置颜色值 在这里我们通 ...

  5. PTA 7-44 本题要求编写程序,输入一个三位数,输出其个位数字、十位数字和百位数字。

    PTA 7-44 本题要求编写程序,输入一个三位数,输出其个位数字.十位数字和百位数字. 分数 4 作者 xcf 单位 长春理工大学 本题要求编写程序,输入一个三位数,输出其个位数字.十位数字和百位数 ...

  6. C#生成含数字字母的随机字符串

    C#生成含数字字母的随机字符串 要求生成的字符串是随机的,也就是字母和数字都需要随机,既可能只包含数字,也可能只包含字母,也可能两者都有. 实现方式如下: 首先定义一个包含所有字母和数字的字符串和一个 ...

  7. 输入一个三位数,求个个数位数字的三次方之和,并判断和是否与该数相同

    解题思路: 先把三位数(n)的3个数位值算出来 然后求数位数字的三次方之和 最后判断数位数字的三次方之和(sum)是否与该数(n)相同 代码: # 输入一个三位数,求个个数位数字的三次方之和,并判断和 ...

  8. php随机生成三位数,php随机生成数字加字母 PHP随机生成数字+调用,

    for ($i = 1; $i PHP生成10位左右,数字.字母混合的字符串且唯一 需要生成一个唯一的字符串要CSS布局HTML小编今天和大家分享大写字母和数字混合,10位为佳,并且不能重复 给你说个 ...

  9. 三位数流水码的生成(000·····009··00A····00Z····ZZZ)

    //规格代码的生成private String getCode (String code) {char[] chars=code.toCharArray();if (chars[2]==57){cha ...

最新文章

  1. 使用canvas操作图像
  2. MXNet动手学深度学习笔记:线性回归
  3. 【Groovy】编译时元编程 ( 编译时处理 ASTTransformation 接口实现 | 配置 ASTTransformation )
  4. pe如何自动加载外置工具_如何自动加载网站的深色模式?
  5. javaCV - 视频截帧,清晰度调整,转gif,视频转音频
  6. Python编写编程作业批量自动打分程序的思路与实现
  7. 【转载】煤层气大事记
  8. lLinux系统安全sudo+pam
  9. .Net文档图像处理工具包GdPicture.NET发布v14.0.27,提升GdViewer控件的速度
  10. android模仿微信浮窗,Android仿微信视屏悬浮窗效果
  11. python 拦截windows弹窗广告_通过python实现弹窗广告拦截过程详解
  12. Stealing Machine Learning Models via Prediction APIs研读报告
  13. 第九届中国云计算大会讲师团探秘 ——数位院士领衔、近20个国家的学者共聚、多个行业领头人及专家参与, 共话云计算大数据生态、应用...
  14. hyperf——代码赏析
  15. 联想win8系统改成win7系统教程,win8系统如何装回win7
  16. 深入浅出JS—03 函数闭包和内存泄漏
  17. 大腿上的妊娠纹怎么消除?
  18. 网络通信——下载管理器DownloadManager——在通知栏显示下载进度
  19. mysql查询18至28岁的人,MariaDB第三章(select)基本查询
  20. Windows程序设计--击键消息和字符消息

热门文章

  1. mybatis引入依赖包
  2. 商用无人机的飞行感知技术
  3. Linux双系统蓝屏,装双系统其中有一个系统进不去(蓝屏)
  4. Unity实战篇:使用图片制作自己的艺术字
  5. 网页QQ第三方登录获取头像不是QQ头像而是QQ空间头像
  6. 非酋用计算机,拯救非酋带你入欧 炉石传说玄学开包经验
  7. 支付宝申请支付权限的流程
  8. RecyclerView的超强辅助Graywater——点击事件
  9. I/O error 32/103
  10. “你们这些月入10万的人,挺可怜的…”