初めまして。宜しくお願いします。
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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
onClickで関数呼出し後に、結果...
-
JSPで<SELECT>の中にDBから持っ...
-
(String args[])というメッソ...
-
コマンドプロンプト実行後に画...
-
Excel VBA でExcelを終了したい...
-
final修飾子を使っているのに、...
-
javascriptからjavaを呼び出したい
-
エクセルVBAにおけるON TIMEメ...
-
DataGridViewでセルクリックイ...
-
VBA コピーが出来ません…!
-
ウィンドウを最前面にできません
-
マスターページからコンテンツ...
-
引数は省略できません。とのコ...
-
VBPをダブルクリックするとたま...
-
Labelコントロールに数字を代入...
-
VBScriptからストアドプロシー...
-
CALLされていないメソッドを見...
-
C#SundPlayerで同期再生が再生...
-
エクセルのマクロでプリンタを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
コマンドプロンプト実行後に画...
-
DataGridViewでセルクリックイ...
-
Labelコントロールに数字を代入...
-
エクセルVBAにおけるON TIMEメ...
-
javascriptからjavaを呼び出したい
-
mainメソッドのthrows節で設定...
-
Refreshメソッドの使い方
-
配列のメソッド
-
VBPをダブルクリックするとたま...
-
final修飾子を使っているのに、...
-
ウィンドウを最前面にできません
-
JSPで<SELECT>の中にDBから持っ...
-
【sendkeysメソッドが動かずに...
-
Excel VBA でExcelを終了したい...
-
VB.netで、シリアル通信のタイ...
-
Application.Wait の参照設定
-
Excel VBA シェイプの原型のサ...
-
onClickで関数呼出し後に、結果...
-
drawStringで文字間隔の調整
おすすめ情報