初めまして。宜しくお願いします。
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!");
}
}
}
----------------------------------------------
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
TestTimerに
private String myParameter;
というフィールドを追加して
public void setParameter(String param){
myParameter = param;
}
のようなセッターメソッドを追加して
runメソッドで
if(myParameter == null){
//nullのときの処理
//setParameter()を呼ぶように促すメッセージを出力する
//とか
//例外を投げるとか…
}else{
//null以外のときの処理
System.out.println(myParameter);
}
としてみてはいかがでしょうか?
質問に答えていただき本当にありがとうございますっ!!
セッターメッソドがキーだったんですね。
まだセッターメソッドがどういう挙動で(どういう仕組みで)動いてるのか分かってない状況ですが、これはソースや調べて自分の理解に繋げ様と思います。
本当に、本当に有難うございます。
No.2
- 回答日時:
#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);
とする。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
mainメソッドのthrows節で設定...
-
Application.Wait の参照設定
-
アクセスVBA 時間を止める
-
onClickで関数呼出し後に、結果...
-
Excel VBA でExcelを終了したい...
-
VBPをダブルクリックするとたま...
-
メソッドをstaticにする、しな...
-
JSPで<SELECT>の中にDBから持っ...
-
HyperLinkのNavigateUrl属性に...
-
ListViewにて行追加
-
javaの中でaddElementは何ですか?
-
C# のScaleは古い?
-
c#でVBのcall的役割を果たすコ...
-
エクセルのvbaによる書式のコピ...
-
10進の自然数を2進数に変換する...
-
C#.net Define文
-
final修飾子を使っているのに、...
-
C#で右からnカラム目に文字を挿...
-
エクセルのマクロでプリンタを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
【sendkeysメソッドが動かずに...
-
エクセルVBAにおけるON TIMEメ...
-
final修飾子を使っているのに、...
-
javascriptからjavaを呼び出したい
-
VBPをダブルクリックするとたま...
-
配列のメソッド
-
JSPで<SELECT>の中にDBから持っ...
-
Refreshメソッドの使い方
-
コマンドプロンプト実行後に画...
-
ウィンドウを最前面にできません
-
onClickで関数呼出し後に、結果...
-
VB.netで、シリアル通信のタイ...
-
日本の教育って時間が無い中で...
-
boolean型のフィールドとゲッタ...
-
VBA コピーが出来ません…!
-
Application.Wait の参照設定
-
VBAでSaveAs使用し、指定してい...
おすすめ情報