当前位置:编程学习 > JAVA >>

java生成一定规则的递增数列

数据库中有一张表,这张表有一个字段是C00001,C00002,C00003……这样递增的,给一段自动按照这种规律生成的java代码。类似的也可以 --------------------编程问答-------------------- 如果只是数字的话可以直接用数据库的序列,如果是按照某种格式的字符串那lz得把当前记录位置保存在一个地方,保存在什么地方可以看你自己项目而定吧,本地文件,数据库,内存数据库等等都行,只要不会丢就好了。生成的时候先读取这个数据,然后再按照你自己的规则生成下一个数据即可。就是一个简单的字符串操作。 --------------------编程问答-------------------- 就是说C99999是最多的?
随便写下  


        String append [] = new String[]{"C00000","C0000","C000","C00","C0","C"};
       String str_id = "C00111";
       int int_id =  Integer.parseInt(str_id.substring(1));
       String new_str_id = String.valueOf( int_id + 1);
       new_str_id = append[new_str_id.length()] + new_str_id;
       System.out.println(new_str_id);
--------------------编程问答--------------------
引用 2 楼 liu4626846 的回复:
就是说C99999是最多的?
随便写下  



Java code
?



1234567

        String append [] = new String[]{"C00000","C0000","C000","C00","C0","C"};        String str_id = "C00111";        int int_id =  Inte……


自己控制下约束什么的! --------------------编程问答-------------------- 如果是要自己生成的话分成两段嘛 字母一段  数字一段。当后面数字到达99999的时候 字母就增加。字母增加直接转成char就可以直接加了。

public static void main(String[] args) {
char c = 'a';
System.out.println(++c);
}
--------------------编程问答--------------------

      String str_id = "C09999";
        char start = str_id.substring(0,1).charAt(0);
        int int_id =  Integer.parseInt(str_id.substring(1));
        if(int_id==99999){
               int_id = 0;
               ++start;
        }
        String new_str_id = String.valueOf(++int_id );
        String append [] = new String[]{start+"00000",start+"0000",start+"000",start+"00",start+"0",start+""};
        new_str_id = append[new_str_id.length()] + new_str_id;
        System.out.println(new_str_id);


--------------------编程问答-------------------- 看你自己的生成策略咯。  分成2块或位数也整张。 --------------------编程问答-------------------- 可以考虑用单例生成这个序列号,要考虑多线程同步,加个同步锁 --------------------编程问答-------------------- public String getNewEmployeeNo(String employeeNo) {
int i = Integer.parseInt(employeeNo) + 1;
String newEmpNo = String.format("%" + 6 + "s", i).replace(' ', '0');
return newEmpNo;
}
这个是我在公司实习的时候做的项目用到的类似的一块,规则是让6位String类型数字实现自增长,和你的要求比较类似,你试着看下吧,有必要可以自己改改 --------------------编程问答-------------------- 触发器吧,每次max + 1 --------------------编程问答-------------------- 流水号嘛。。。 --------------------编程问答-------------------- final AtomicInteger counter = new AtomicInteger(0);

String s = String.format("C%05d",counter.incrementAndGet()); --------------------编程问答--------------------
引用 11 楼 huntor 的回复:
final AtomicInteger counter = new AtomicInteger(0);

String s = String.format("C%05d",counter.incrementAndGet());
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,