需求是一个序号生成器,以A开头,后面十一位从1开始,空位补零。最大需要到9999999999。
以下是一段测试代码:
private static final String prefix = "A00000000000";
 
public static void main(String[] args){
int count =0;
while(true){
count+=1;
String tmp = String.valueOf(count);
int len = prefix.length();
String pre = prefix.substring(0,(len-tmp.length()))+tmp;
System.out.println(pre);
                  if(count > 9) break;
}

}以上代码是一个简单的自加方法,返回一个如“A00000000001”、“A00000000002”……这样的字符串
2个问题:
1:现在我想写一个函数,每次调用这个方法的时候,count在初始化的时候增加1,这样,每次调用就可以返回不同的字符串作为序号了。
2:int类型数据不支持9999999999这么大的数。

解决方案 »

  1.   

    为什么不用oracle的序列啊在java中可以用long或者BigDecimal 来做
      

  2.   

    可以实现一个类的啊,在类成员保存当前的Value,用Long就够了
      

  3.   

    强烈建议用oracle的序列.
    你的序列号持久化到哪去了?
    如果没持久化,你重新运行程序,序号不又从头开始产生了?
      

  4.   

    楼主就算是自己写也用不着你那么麻烦  final String pattern="A00000000000";
     java.text.DecimalFormat format = new java.text.DecimalFormat(pattern);
     System.out.println(format.format(8800));//格式化数字
     System.out.println(format.parse("a008800").longValue());//解析字符串
    建议用数据库机制生成ID因为这样要设计到多线程同步,ID持久化
      

  5.   

    唉 又不是谁都用ORACLE的……  难道还为了实现个序列装个ORACLE不成持久化是另外的问题
      

  6.   


         
    2:int类型数据不支持9999999999这么大的数。
    改用 long