//任务批次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

解决方案 »

  1.   

    LZ要的序列号就是1,2,3.。。N吗?还是你用这个代替了?
    要是就是从1到N这么简单,干嘛还根据0,1,2,3换啊,直接每次+1就行了
      

  2.   

    如果是要计数 再new一个变量i 当smNo++时i++。= = 你这问题  貌似就这方法最简单了。
      

  3.   

    smNo每0,1,2,3算一次循环的话。
    a=smNo+4*smNo的循环次数
      

  4.   

    我觉得应该还有一个计数器,计算smNo的循环的次数。否则你每一次都清零了。没法统计啊。 public static void main(String[] args) {
    int a = 0;
    for (int y = 0; y <= 20; y++) { for (int i = 0; i <= 3; i++) {
    System.out.println("i = " + i);
    System.out.println("a =    " + (i + 4 * a));
    if (i == 3) {
    a++;
    }
    }
    }
    }
      

  5.   

    传入的值,就是getsmNo里获取的值!