【发布时间】:2010-03-29 06:44:54
【问题描述】:
import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
public class Boggle {
Board board;
Player player;
Timer timer;
boolean active;
static Scanner in = new Scanner(System.in);
public Boggle() {
board = new Board(4);
timer = new Timer();
}
public void newGame() {
System.out.println("Please enter your name: ");
String line = in.nextLine();
player = new Player(line);
active = true;
board.shuffle();
System.out.println(board);
timer.schedule(new timesUP(), 20000);
while(active) {
String temp = in.nextLine();
player.addGuess(temp);
}
}
public void endGame() {
active = false;
int score = Scoring.calculate(player, board);
System.out.println(score);
}
class timesUP extends TimerTask {
public void run() {
endGame();
}
}
public static void main(String[] args) {
Boggle boggle = new Boggle();
boggle.newGame();
}
}
我有上面的类,它应该在给定的时间长度内执行一个循环,然后调用一个实例方法。本质上,在当前实例上调用 endGame() 之前,我需要 newGame() 中的循环运行一分钟左右。但是,使用 Timer 类我不确定如何在当前实例上调用我需要的方法,因为我无法将任何参数传递给 timertasks 运行方法?
有没有一种简单的方法可以做到这一点,还是我用错了方法? (注意:这只是一个控制台项目,没有 GUI)
===========
代码编辑
我已按照建议将代码更改为上述代码,它几乎可以按我的预期工作,但是线程似乎仍然没有正确结束。我是while循环会死,控制最终会回到主要方法。有什么想法吗?
【问题讨论】: