java - 为什么我的计时器没有每秒打印一次?
问题描述
我想制作一个每秒打印一次的代码,该代码在我的计时器中传递总共 30 秒(因此我制作了一个 for 循环)但是它只是重复打印 1,所以我猜测我的 for 循环不起作用并且它没有将 1 附加到变量分数。关于我应该做什么的任何建议?谢谢。
public class TimerSchedule {
public static void main(String[] args) {
// creating timer task, timer
Timer t = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
for(int i=0; i<30;i++)
{
int score = 0;
score ++;
System.out.println(score);
}
};
};
t.scheduleAtFixedRate(tt,0,1000);
}
}
解决方案
它打印的原因是您在循环1
中放置了以下两个语句:for
int score = 0;
System.out.println(score);
第一个score
在每次迭代中重置,而第二个在每次迭代中打印更新的值score
。第一个应该放在外面run()
。此外,您需要在score
达到的值时取消计时器30
。
以下是更新后的代码:
import java.util.Timer;
import java.util.TimerTask;
public class Main {
public static void main(String[] args) {
Timer t = new Timer();
TimerTask tt = new TimerTask() {
int score = 0;
@Override
public void run() {
System.out.println(++score);
if (score == 30) {
t.cancel();
}
};
};
t.scheduleAtFixedRate(tt, 0, 1000);
}
}
输出:
1
2
3
...
...
...
29
30
推荐阅读
- rest - NetSuite API 中的应付金额数据不一致
- python - 在python中组合数据框
- python - Airbrake-Django 引发 SSLError
- java - 跟踪增强型 android 应用程序的标记。哪个图书馆?
- r - 在R中如何合并列表
- javascript - 谷歌地图未加载到自动 div
- sql-server - SQL数据库中一张表导入多张Excel表,只有一张表有表头
- docker - 如何对接第三方 Go 应用程序
- c++ - 为什么会有一个指向未指定模板类的对象的指针(没有指定使用的实际类型)?
- javascript - chrome 扩展仅在后台页面处于活动状态时运行