質問

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()のループを1分ほど実行する必要があります。ただし、Timerクラスを使用すると、timertasks runメソッドにパラメータを渡すことができないため、現在のインスタンスで必要なメソッドをどのように呼び出すか

これを行う簡単な方法はありますか、私はこれを間違った方法で行っていますか?(注:これはコンソールプロジェクトのみで、GUIはありません)

==========

編集されたコード

推奨事項に従ってコードを上記に変更しましたが、期待どおりに動作しますが、スレッドはまだ正常に終了していないようです。私はwhileループが死ぬだろうし、制御は最終的にmainメソッドに戻ってくるだろう。何か考えは?

役に立ちましたか?

解決

指定したリンクには、WebアプリケーションにURLを入力できる状態で、URLを入力しない場合は、ファームワイド、それ以外の場合はWebアプリケーションスコープ。

コマンドでは、下位レベル(サイトコレクション、Web、Listなど)で制御できません。単一のリストで実行するために、おそらくXSLを使用することができます。

stsadmコマンドstsadm -o setproperty -pn days-to-show-new-icon -pv 14も2010年も有効です。

他のヒント

スレッドでコンソール入力をブロックしています。実行時間はそれによって決定されます。コンソール入力を別のスレッドに入れ、現在のスレッドにタイマーを追加して、1分後に入力スレッドを強制終了し、これを呼び出すことができます。エンドゲーム()

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top