当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个未得到服务。
答案 0 :(得分:0)
如果请求时间为> 0
,则递减requestTime,然后执行方法的其余部分。因此,当requestTime为1时,它变为0,然后执行其余代码。
如果请求时间为== 0
,则不递减requestTime,然后执行方法的其余部分。所以它保持为0,然后执行其余的代码。
我想你要么总是要减量,要么在requestTime是== 0时避免执行其余的代码。