前言:不知咋的脑袋抽筋的想到数字可以直接自增成序列要是字母呢该怎么增加 aaa aab aac aad aae aaf aag aah aai aaj aak??于是就有了下面的代码

package com.example.example1.web;
public class test1 {
    public static void main(String[] args) {
        String a="aaa";
        for (int i=1;i<26*26*26+1;i++){
            System.out.print(a+" ");
            a=createNext(a);
            if (i%26==0){
                System.out.println();
    public static String createNext(String string){
        char [] tempChar = string.toCharArray();
        for(int i =tempChar.length-1;i>=1;i--){
            if (tempChar[i]<'z' ){
                tempChar[i]=(char)(tempChar[i]+1);
                break;
            }else {
                tempChar[i]='a';
                tempChar[i-1]=(char)(tempChar[i-1]+1);
                if (tempChar[i-1]<='z'){
        return String.valueOf(tempChar);

 结果集如下

aaa aab aac aad aae aaf aag aah aai aaj aak aal aam aan aao aap aaq aar aas aat aau aav aaw aax aay aaz aba abb abc abd abe abf abg abh abi abj abk abl abm abn abo abp abq abr abs abt abu abv abw abx aby abz aca acb acc acd ace acf acg ach aci acj ack acl acm acn aco acp acq acr acs act acu acv acw acx acy acz ada adb adc add ade adf adg adh adi adj adk adl adm adn ado adp adq adr ads adt adu adv adw adx ady adz aea aeb aec aed aee aef aeg aeh aei aej aek ael aem aen aeo aep aeq aer aes aet aeu aev aew aex aey aez 写道在某些应用场景中,因业务需要,一般的流水号(前缀+日期或时间+流水号)规则无法满足业务需要,以下是因业务需要拓展出来的流水号生成规则业务要求:1.默认限定位数的数字递增2.在限定位数数字达到全部为9的时候,用字母替换最后一位,数字归0再次递增3.当字母长度为限定位数长度并且字母都为Z的时候,限定长度加1预期结果(限定长度4位,从1开始):0001...9999...001A...001B...... 其实总体实现思路就是,保留一个增长的数字,然后通过我们业务需求,进行求余和相除实现,而不是将字母和数字分开,各自实现。写这篇文章的时候,博主查阅了部分资料,发现大部分实现都是数字和字母剥离校验,即AA和0001分开实现,或者先纯数字后字母等等~,1 / (MAX_NUMBER + 1),得到的是字母部分的值,然后推算字母部分的实现也是差不多同样的思路,相除和求余即可。,1 % (MAX_NUMBER + 1) = 1 ,可以确认位数是 1,再String格式化,就是0001了。 前言:不知咋的脑袋抽筋的想到数字可以直接自增成序列要是字母呢该怎么增加 aaa aab aac aad aae aaf aag aah aai aaj aak??于是就有了下面的代码 要是大神们有简介的方法请不吝赐教; package com.example.example1.web; public class test1 { public static void main(Str... 是的,你可以这样做:for (char alphabet = 'A'; alphabet <= 'Z'; alphabet++) { System.out.println(alphabet); }types转换也是可能的:for (int i = 65; i <= 90; i++) { System.out.println((char)i); }是的,像这样:for (int i = ... 小编典典这里有3个解决方案:前两个是算术增量,而第三个更多是字符操作。这三个实现都通过相同的单元测试:assertEquals("1DDA01A", MyClass.increment("1DDA00Z"));assertEquals("1A9AV00", MyClass.increment("1A9AU99"));assertEquals("AFH00", MyClass.increment("... 项目需求中有时需要生成一定规则递增编号。例如生成设备编号:设备类型+五位编号(从1开始,不够前补0),也就是 SYXH000001 / SYXH00002 / SDOI00001 类似这样。 那么如何处理 000001 自增1变为 000002 呢? 定义一个可选字母的数组A-Z;在这里可以去掉一些和数字长相冲突的字母,比如O.定义静态代码块,计算出A00000 . AA0000、AAA000、AAAA00、AAAAA0、AAAAAA的数字;static {i++) {如果目标数字大于等于BOUNDARIES的最后一位,也就是超出了我们定义的最大长度。抛出异常;获取目标数字是在000000、A00000 、AA0000、AAA000、AAAA00、AAAAA0、AAAAAA这些区间的哪一段。 匿名用户1级2014-05-29 回答importjava.util.LinkedList;publicclassReplaceNumber{publicstaticvoidmain(String[]args){LinkedListresult=newLinkedList();charr='0',g='0',b='0';Stringrgb=""+... Java线程输出ABCDpackage xufeng.java;public class Printer implements Runnable{// 输出字符String printStr = null;// 下一个输出对象Printer nextPrinter = null;public Printer(String str){printStr = str;}public void setNe...