チョコミントアイス

初めまして。宜しくお願いします。
Javaの初心者で現在勉強中で、一定時間ごとに命令を走らせるプログラムを作ろうとしており、様々なサイトや本を参考にした結果、Timerクラス、TimerTaskクラスを使うと良さそうという事がわかりました。
一定周期毎に標準出力するのみのプログラムなら出来たのですが、実行時引数を一定周期毎に標準出力するプログラム作成時に躓いてしまいました。

望む挙動:
$ java test1 abcdef
とターミナルに入力して、一定周期毎に、"abcdef"が表示し続ける挙動。

躓いている点:
main()メソッドからrun()メソッドに実行時引数(この場合、String st = String new args[0];)を渡そうと試みてる点。

-----------------ソースコード---------------------


import java.util.Timer;
import java.util.TimerTask;

public class test1 {
public static void main(String args[]) throws Exception{

String st = new String(args[0]);

Timer timer = new Timer();
timer.schedule(new TestTimer(), 0, 1000);

}
/**
* 指定間隔置きに呼ばれる処理
*/

static class TestTimer extends TimerTask{

public void run(){
System.out.println(st);
// System.out.println("Hello, World!");
}

}

}

----------------------------------------------

宜しくお願いします。

A 回答 (2件)

TestTimerに


private String myParameter;
というフィールドを追加して
public void setParameter(String param){
myParameter = param;
}
のようなセッターメソッドを追加して
runメソッドで
if(myParameter == null){
  //nullのときの処理
  //setParameter()を呼ぶように促すメッセージを出力する
  //とか
  //例外を投げるとか…
}else{
  //null以外のときの処理
  System.out.println(myParameter);
}
としてみてはいかがでしょうか?
    • good
    • 0
この回答へのお礼

質問に答えていただき本当にありがとうございますっ!!

セッターメッソドがキーだったんですね。
まだセッターメソッドがどういう挙動で(どういう仕組みで)動いてるのか分かってない状況ですが、これはソースや調べて自分の理解に繋げ様と思います。

本当に、本当に有難うございます。

お礼日時:2005/08/04 18:42

#1です。


あ゛っ、しまった。
>timer.schedule(new TestTimer(), 0, 1000);
↑をする前に
TestTimer testTimer = new TestTimer();
testTimer.setParameter(st);
としてから
timer.schedule(testTimer, 0, 1000);
としないとダメです。


あっ、あとは引数ありのコンストラクタと作ってもいいですね。
public TestTimer(String param){
  myParameter = param;
}
をTestTimerに追加して、
timer.schedule(new TestTimer(st), 0, 1000);
とする。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!