定时计数器 - 整数递减(JAVA)
Timed counter - decrementing of integer(JAVA)
所以我的问题是我想在每个 "run" 之后递减 Counter 整数。如果我把 Counter-- 放在代码中(见评论)然后我得到一个错误说 "Local variable Counter defined in an enclosing scope must be final or effectively final".
我现在如何更改我的代码,使 "Counter"、int、每次打印后递减?
public void RunCounter(int TimeCount) {
int Counter = TimeCount
Runnable Count = new Runnable() {
public void run() {
System.out.println(Counter);
//Counter--;
}
};
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
ScheduledFuture<?> countTimer = executor.scheduleAtFixedRate(Count, 1, 1, SECONDS);
executor.schedule(new Runnable()
{
public void run() {
countTimer.cancel(true);
}
}, TimeCount, SECONDS);
}
不要将counter
声明为final,因为如果counter
是final以后就不能改变了,一定要在class中定义int Counter作为全局变量..
所以我的问题是我想在每个 "run" 之后递减 Counter 整数。如果我把 Counter-- 放在代码中(见评论)然后我得到一个错误说 "Local variable Counter defined in an enclosing scope must be final or effectively final".
我现在如何更改我的代码,使 "Counter"、int、每次打印后递减?
public void RunCounter(int TimeCount) {
int Counter = TimeCount
Runnable Count = new Runnable() {
public void run() {
System.out.println(Counter);
//Counter--;
}
};
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
ScheduledFuture<?> countTimer = executor.scheduleAtFixedRate(Count, 1, 1, SECONDS);
executor.schedule(new Runnable()
{
public void run() {
countTimer.cancel(true);
}
}, TimeCount, SECONDS);
}
不要将counter
声明为final,因为如果counter
是final以后就不能改变了,一定要在class中定义int Counter作为全局变量..