日期:2014-05-18  浏览次数:20612 次

帮忙想一下根据一个不断重复的序列号来获取到一个不重复的号码的逻辑,

//任务批次ID(每次任务的ID)
private static volatile int smNo =0;      //序列号,循环进位,满了之后再从0开始计位   
    //获取任务批次ID
public static synchronized int getsnMo() {


if(smNo==3)
{
smNo=0;
}
int a=smNo;
++smNo;
return a;
}



上面的代码是每次获取一个序列号!这个序列号徘徊在0-3之间!就是我每次获取到得值分别为:0,1,2,3,0,1,2,3,0,1,2,3,
现在想做一个判断就是当获取到得序列号重复的时候,我就让他在前一个值的基础上加1,即当获取到得值为3时,下次获取到得值就是4,不让他显示0了,后面的依次类推,也就是说我要的值是0,1,2,3,4,5,6,7,8,9,10,11直到最大值,请问该怎么弄呢?就是如下面的数字这样对应:请高手指导下:
0,1,2,3,0,1,2,3,0,1,2 ,3 ,0 ,1 ,2 ,3 ,0 ,1 ,2 ,3 ,...
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,...
Java

------解决方案--------------------
把 if 注释掉不就完毕了?

或者你另外定义一个计数器。
------解决方案--------------------
显然你只能用另一个计数器来保证得到不重复的。不管你是直接计数,还是记录清0的次数。
------解决方案--------------------
LZ要的序列号就是1,2,3.。。N吗?还是你用这个代替了?
要是就是从1到N这么简单,干嘛还根据0,1,2,3换啊,直接每次+1就行了
------解决方案--------------------
如果是要计数 再new一个变量i 当smNo++时i++。。。。

= = 你这问题  貌似就这方法最简单了。



------解决方案--------------------
= = 有种东西叫全局变量。。方法每执行一次 就+1。。。孩子 加油。。
------解决方案--------------------
那就做个全局变量做计数器。每循环一次计数器加一。
------解决方案--------------------
晕了,到底闹哪样