Причина, по которой он печатает 1
, заключается в том, что вы поместили следующие два оператора внутри for
l oop:
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