定时器在停止时给出2个值

时间:2013-12-08 09:53:51

标签: java for-loop random timer

当requestTime == 0时,我得到2个结果。我已经在for循环中打印了“运气”并且它循环了5秒但是当它达到0时它会打印两个结果。我从System.out得到一个结果,它在if(requestTime == 0)中,然后我的for循环再运行1个,我从if获得另一个System.out(更新的一个)(requestTime == 0)我怎么才能解决这个问题?我需要获得FINAL值。一位朋友告诉我,我可以使用阵列,但我不知道怎么做。我需要在for循环中计算并打印值的SUM。

   //TIMER METHOD
 static int requestTime = 5;
 public static void randomN () {
      myTimer.scheduleAtFixedRate(new TimerTask() {
              public void run() {
                     if(requestTime > 0)
               {
                   requestTime--;
               }
               else myTimer.cancel();

               int nTimesRandom = (int) (Math.random()*6+1);
               for (int i=0; i<nTimesRandom; i++) {
                   int rx = (int) (Math.random()*10+1); 
                   int ry = (int) (Math.random()*10+1); 
                   a = a+nTimesRandom;

               if (Math.sqrt(Math.pow((a1x1-rx),2)+Math.pow((a1y1-ry),2))<3) {
                 reached1++;
                 if ( cap1 < 3 ) { cap1++; }
                 else if ( cap1 == 3 ) { nreached1++; }
               }
               else { oor++; }
               if (Math.sqrt(Math.pow((a2x2-rx),2)+Math.pow((a2y2-ry),2))<3) {
                 reached2++;
                 if ( cap2 < 3 ) { cap2++; }
                 else if ( cap2 == 3 ) { nreached2++; }
               }
               else { oor++; }
               if (Math.sqrt(Math.pow((a3x3-rx),2)+Math.pow((a3y3-ry),2))<3) {
                 reached3++;
                 if ( cap3 < 3 ) { cap3++; }
                 else if ( cap3 == 3 ) { nreached3++; }
               }
               else { oor++; }
               System.out.println("luck");

               }
                oor = a -( reached1+reached2+reached3) ;
                int totalreached = reached1+reached2+reached3 ; 
                if ( requestTime == 0 ) { 
                  System.out.println( a + " communication requests were generated, " + totalreached + " of them were served, " + oor + " of them were unserved."); }
                 // System.out.println("Requests " + "X : " + rx + " Y: " + ry);


               }
      }, 0, 1000);

}

我的控制台输出如下:

...

运气

...

生成了142个通信请求,其中20个服务,其中122个未得到服务。

运气

运气

运气

运气

生成158个通信请求,其中23个服务,其中135个未得到服务。

1 个答案:

答案 0 :(得分:0)

如果请求时间为> 0,则递减requestTime,然后执行方法的其余部分。因此,当requestTime为1时,它变为0,然后执行其余代码。

如果请求时间为== 0,则递减requestTime,然后执行方法的其余部分。所以它保持为0,然后执行其余的代码。

我想你要么总是要减量,要么在requestTime是== 0时避免执行其余的代码。