为什么我的计时器没有每秒打印一次?
Why doesn't my timer print every second that passes?
我想制作一个代码,在我的计时器中每秒打印一共 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
我想制作一个代码,在我的计时器中每秒打印一共 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