• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JAVAのソースについて)

JAVAのソースについて

このQ&Aのポイント
  • JAVAのソースについて
  • 独学でandroidを勉強しています。タイマーのソースを見ていたのですが、何故この記述になるか点でさっぱりわかりませんどなたか分かりやすく教えてください。特に「 timer.schedule( new TimerTask() {~」の部分が分かりません。もし出来るのならば分かりやすく分解して書きたいのですが可能でしょうか?お願いします。
  • 独学でandroidを勉強している方がタイマーのソースコードでつまずいているようです。具体的には「timer.schedule( new TimerTask() {~」の部分が分かりません。質問者さんは分かりやすく分解して書いて欲しいとおっしゃっています。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

既にANo.1の方がヒントを出していますが、timer.schedule()の部分を分解して書くには下記のように新しいクラスを2つ定義する必要があります。 class RunnableX implements Runnable { public void run() { second++; 中略 } } class TimerTaskY extends TimerTask { public void run() { handler.post(new MyRunnable()); } } timer.schedule(new TimerTaskY(), 1000, 1000); ただし、RunnableXの定義からsecond, minute, hourを、TimerTaskYの定義からは変数handlerをアクセスできなければいけません。 RunnableXやTimerTaskYをプログラム中の他の場所で使うことがないなら無名クラスを使って書いた方が簡潔に記述できますが、どちらが読みやすいかは好みの問題です。

elkheart
質問者

お礼

分かりやすく説明していただいてありがとうございます。 何とか理解できそうです。 またよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

ANo.2でnew MyRunnable()と書いた部分はnew RunnableX()の誤りです。訂正の上お詫びします。

全文を見る
すると、全ての回答が全文表示されます。
  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.1

とりあえず、「無名クラス」でググッてちょうだい。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • new Runnable() runメソッド

    以下ソースコードの@Override注釈を入れるとエラーになります。 Runnableインターフェースではrumメソッドをオーバーライドする必要があると思うのですが、 @Override注釈を入れるとエラーになります。 @Override注釈を入れないとエラーにならず実行できます。 環境はEclipseで、Androidのエミュレーターへ出力してテスト中です。 どなたか原因をご存じの方がおられましたら、アドバイスよろしくお願い致します。 public void startTimer(){ final Handler handler = new Handler(); TimerTask task = new TimerTask(){ @Override public void run() { handler.post(new Runnable(){ //@Override ←ここを記入するとエラーになる。 public void run() { board.doComp(); invalidate(); timer.cancel(); if (!board.isPlaying) return; if (board.isPass(board.you)){ board.addMessage("あなたは、パスです。"); showMsg("あなたは、パスです。"); startTimer(); } else { board.canMove = true; } } }); } }; timer = new Timer(); timer.schedule(task, 1000); }

    • ベストアンサー
    • Java
  • Timerについて教えて下さい

    ある処理を5秒おきに、n回だけ実行したいのですが、「n回」をどのように実現したらよいのかわかりません。Timerクラスのメソッドにはないようなのですが。。簡単なサンプルコードを書いてみましたので以下を元に修正方法を教えて頂けると助かります。 import java.util.Timer; import java.util.TimerTask; public class TimerTest { public static void main(String[] args) { int n=10; Timer timer = new Timer(); timer.schedule(new sendTask(), 5000, 5000); } } class sendTask extends TimerTask { public void run() { System.out.println("Hello World"); } }

    • ベストアンサー
    • Java
  • JAVA NetBeans タイマーでのラベル

    MacでNetBeans7.3.1を使ってる初心者です。 タイマーにチャレンジしてるのですが、 出力にはちゃんと表示できてるようですが、 ラベルに表示できなく、エラーがでます。 たぶんラベルの使い方がおかしいんだと思いますがどうすればよいか分かりません。 ご教授よろしくお願い致します。 下記URLはスクリーンショットです。 http://mokkori0710.web.fc2.com/netbeans.jpg public static void main(String args[]) { new NewJFrame().setVisible(true); JLabel jLabel1 = new JLabel(); Timer timer01 = new Timer();//タイマーを作成 timer01.scheduleAtFixedRate(new TimerTask() { int i=0; String str; public void run() { i+=1; str=Integer.toString(i); //jLabel1.setText(str); System.out.println(str); } }, 0, 1000);//時間の間隔 1000=1秒 }

    • ベストアンサー
    • Java
  • 実行時引数をrun()メソッドに渡すには?

    初めまして。宜しくお願いします。 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!"); } } } ---------------------------------------------- 宜しくお願いします。

    • ベストアンサー
    • Java
  • あともうちょっで完成なのですが・・・

    うまく動作しないのですが、以下のプログラムのどこが間違っているのでしょうか? たぶん、メイン関数の宣言の部分だと思うのですが・・・。 #include<stdio.h> typedef struct Time{ int hour; int second; int minute; }Time; int main(void){ Time time1,time2,time3; Time time[3]; int i; for(i=0;i<3;i++){ printf("time%dの時間を入力\n",i+1);   scanf("%d",time[i].hour); printf("time%dの分を入力\n",i+1)   scanf("%d",time[i].minute); printf("time%dの秒を入力\n",i+1); scanf("%d",time[i].second); } time3.second = time1.second + time2.second; if( time3.second >= 60 ){ time3.second=-60; /* time3.second = time3.second - 60; */ time3.minute=1; }else{ time3.minute=0; } time3.minute = time3.minute + time1.minute + time2.minute; if( time3.minute >= 60 ){ time3.minute=-60; /* time3.minute = time3.minute - 60; */ time3.hour=1; }else{ time3.hour=0; } time3.hour= time3.hour+ time1.hour+ time2.hour; return 0; }

  • C#について・・・

    次のようなブログラムなのですが、ラジオボタンが上手く切り替わりません。 どこを修正すると上手くいくでしょうか? <<文字数オーバーのため省略>> public Form1() { // // Windows フォーム デザイナ サポートに必要です。 // InitializeComponent(); if(isJapanStyle) { label5.Text=string.Format("0時0分0秒"); label6.Text=string.Format("0時0分0秒"); } else { label5.Text=string.Format("00:00:00"); label6.Text=string.Format("00:00:00"); } // // TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。 // <<文字数オーバーのため 省略>> static void Main() { Application.Run(new Form1()); } protected void button1_Click(object sender, System.EventArgs e) { if(isJapanStyle) { label5.Text=string.Format("{0}時{1}分{2}秒",dt.Hour,dt.Minute,dt.Second); } else { label5.Text=DateTime.Now.ToString("T"); } recTime=dt; timer2.Stop(); timer3.Start(); } private void button2_Click(object sender, System.EventArgs e) { Application.Exit(); } private void timer1_Tick(object sender, System.EventArgs e) { dt=DateTime.Now; if(isJapanStyle) { label4.Text=string.Format("{0}時{1}分{2}秒",dt.Hour,dt.Minute,dt.Second); } else { label4.Text=DateTime.Now.ToString("T"); } } private void timer3_Tick(object sender, System.EventArgs e) { keika=dt-recTime; if(isJapanStyle) { label6.Text=string.Format("{0}時間{1}分{2}秒",keika.Hours,keika.Minutes,keika.Seconds); } else { label6.Text=string.Format("{0}:{1}:{2}",keika.Hours,keika.Minutes,keika.Seconds); } } private void timer2_Tick(object sender, System.EventArgs e) { timer3.Stop(); } private void radioButton2_CheckedChanged(object sender, System.EventArgs e) { isJapanStyle=false; } private void radioButton1_CheckedChanged(object sender, System.EventArgs e) { isJapanStyle=true; } } }

  • PHPでPCのローカル時刻は取得出来ますでしょうか?

    PHPでPCのローカル時刻は取得出来ますでしょうか? 現在、javascriptで取得しているのですが、これを PHPの変数として取得出来ないか考えております。 javascriptでは下記のように取得して表示させています。 <script type="text/javascript"> var nowtime = new Date(); var hour = nowtime.getHours(); var minute = nowtime.getMinutes(); var second = nowtime.getSeconds(); if(hour < 10) { hour = "0" + hour; } if(minute < 10) { minute = "0" + minute; } if(second < 10) { second = "0" + second; } document.write(hour,minute,second); </script> 例えば現在が12時34分56秒だとしたら、javascriptで 「123456」という6ケタの数字を取得出来ます。 この「123456」を、PHPの変数として使いたいです。 ($jikoku = 123456) どなたかお知恵を拝借出来ませんでしょうか? 何卒宜しくお願い致します。

    • ベストアンサー
    • PHP
  • androidのintentの使い方

    // //問題:LISTを押すと、エラーが出る、Intentの問題ですか? // public class FirstActivity extends Activity { // onCreateメソッド(画面初期表示イベントハンドラ) private static final String TAG ="[HelloWorld]"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);// スーパークラスのonCreateメソッド呼び出し setContentView(R.layout.firstlayout);// レイアウト設定ファイルの指定 ListView listview = (ListView) findViewById(R.id.fruitlist); // ListViewオブジェクト取得 listview.setOnItemClickListener(new ListItemClickListener()); // ListViewオブジェクトにクリックリスナーを関連付け } // アイテムクリックリスナー定義 class ListItemClickListener implements OnItemClickListener { public void onItemClick(AdapterView<?> parent, View view, int position, long id) {// onItemClickメソッド(値選択時イベントハンドラ) ListView listview = (ListView) parent; // ListViewオブジェクト取得 String item = (String) listview.getItemAtPosition(position);// 選択された値取得 Log.d(item, TAG); Intent intent = new Intent(FirstActivity.this,SecondActivity.class);// インテントの生成(呼び出すクラスの指定) startActivity(intent);// 次のアクティビティの起動 } } } -------------------------------------------------------------------------- public class SecondActivity extends Activity { // onCreateメソッド(画面初期表示イベントハンドラ) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // スーパークラスのonCreateメソッド呼び出し setContentView(R.layout.main);// レイアウト設定ファイルの指定 } }

    • ベストアンサー
    • Java
  • Javaのプログラミング手伝ってください

    以下のソースコードを応用して、添付画像のような数字のかかれた画像を3つ並べてそれを回して7を揃えるというゲームを作りたいのですが全く進みません。どなたか完成させてくださいm(__)m使用する画像のファイル名は「slot1.jpeg」~「slot7.jpeg」です。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.Timer; public class OneSlot extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; final int MAX = 7; Timer timer = new Timer(150 , this); JLabel label= new JLabel("スタートで始まるよ",JLabel.CENTER); JButton[] bt = {new JButton("スタート"),new JButton("ストップ")}; JLabel slot= new JLabel(new ImageIcon("Slot1.jpg"),JLabel.CENTER); ImageIcon[] slot_icon = new ImageIcon[MAX]; int iCount = 0; OneSlot(String title) { super(title); timer.setActionCommand("timer"); setBounds(200, 200, 230, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for(int i = 0;i < slot_icon.length; i++) slot_icon[i] = new ImageIcon("Slot" + (i+1) + ".jpg"); add("North",label); add("Center",slot); JPanel p = new JPanel(); for (int i = 0; i < bt.length;i++) { bt[i].addActionListener(this); p.add(bt[i]); } add("South",p); setVisible(true); } public static void main(String[] args) { new OneSlot("スロットマシン"); } public void actionPerformed(ActionEvent e) { String cmd = e.getActionCommand(); if(cmd.equals("timer")) { if(++iCount == slot_icon.length) iCount = 0; slot.setIcon(slot_icon[iCount]); } if(e.getSource() == bt[0] && !timer.isRunning()) { label.setText("7が当たりだよ"); timer.start(); } else if(e.getSource() == bt[1] && timer.isRunning()) { if(iCount+1 == MAX) label.setText("やった!!おめでとう"); else label.setText("残念でした"); timer.stop(); } } }

  • Timer schedule

    Java言語のTimerクラスについて public void schedule (TimerTask task, long delay, long period) delayとperiodは何を意味するのでしょうか? よろしくお願いします public void schedule (TimerTask task, long delay, long period) Schedule a task for repeated fixed-delay execution after a specific delay. Parameters task the task to schedule. delay amount of time in milliseconds before first execution. period amount of time in milliseconds between subsequent executions.

    • ベストアンサー
    • Java
このQ&Aのポイント
  • 恋愛相談:友達までしか進めない男性の悩み
  • ゲームを通じて仲を深めることができない
  • 気になる人との関係を深める方法を知りたい
回答を見る