ゆるゆるプログラミング

・Javaソースダウンロード(StopWatch2.java)

このソースについての記事はこちら「ストップウォッチ その2」です。

StopWatch2.javaをダウンロード

ダウンロードしたファイルはzip形式です。解凍して使ってください。Windowsの場合、ダウンロードしたzipファイルをマウスの右ボタンでクリックして表示されるポップアップメニューから「すべて展開(T)」で解凍できます。

// ストップウォッチクラスを作成
class MyStopWatch2 {
	// 開始時間に初期値-1を代入
	private long ts = -1;

	// 終了時間に初期値-1を代入
	private long te = -1;

	// 計測時間に初期値0を代入
	private long tresult = 0;

	// 一時停止するまでの時間に初期値-1を代入
	private long tresult_temp = -1;


	// 開始メソッド
	public void start()
	{
		// 計測時間に初期値0を代入
		tresult = 0;

		// 一時停止までの時間に初期値-1を代入
		tresult_temp = -1;

		// 開始時間を代入
		ts = System.nanoTime();
	}
	
	// 停止メソッド
	public void stop()
	{
		// start()が呼ばれているか?
		if ( 0 > ts ) return;

		// 終了時間を代入
		te = System.nanoTime();

		// 計測時間を代入
		if ( 0 <= tresult_temp )
			// 一時停止あり
			tresult = te - ts + tresult_temp;
		else
			// 一時停止なし
			tresult = te - ts;
	}

	// クリアメソッド
	public void clear()
	{
		// 開始終了時間に初期値-1を代入
		ts = -1;
		te = -1;

		// 計測時間に初期値0を代入
		tresult = 0;

		// 一時停止までの時間に初期値-1を代入
		tresult_temp = -1;
	}

	// 一時停止メソッド
	public void suspend()
	{
		// start()が呼ばれているか?
		if ( 0 > ts ) return;

		// 終了時間を代入
		te = System.nanoTime();

		// 一時停止するまでの時間を計算
		tresult_temp += te - ts;

		// 計測時間に一時停止するまでの時間を代入
		tresult = tresult_temp;		

		// 開始終了時間に初期値-1を代入
		ts = -1;
		te = -1;
	}

	// 再開メソッド
	public void resume()
	{
		// 一時停止中か?
		if ( ( 0 <= tresult_temp ) && ( 0 > ts ) ) {
			// 一時停止中
			// 開始時間を代入
			ts = System.nanoTime();
		}
	}

	// 計測時間をナノ秒で返す
	public long nanotime()
	{
		return tresult;
	}
}


// メイン
public class StopWatch2 {
	public static void main( String[] args ) {
		// ストップウォッチクラスを作成
		MyStopWatch2 sw = new MyStopWatch2();

		try {
			// スタート
			sw.start();

			// 500ミリ秒停止
			Thread.sleep( 500 );

			// 一時停止
			sw.suspend();

			// 300ミリ秒停止
			Thread.sleep( 300 );

			// 再開
			sw.resume();

			// 200ミリ秒停止
			Thread.sleep( 200 );

			// 一時停止
			sw.suspend();

			// 100ミリ秒停止
			Thread.sleep( 100 );

			// 再開
			sw.resume();

			// 200ミリ秒停止
			Thread.sleep( 200 );

			// ストップ
			sw.stop();

			// 時間計測結果を表示
			// 計測時間をナノ秒で取得
			long tnsec = sw.nanotime();

			// 処理時間 ミリ秒
			double tmsec = (double)tnsec / 1000000.0;

			// 処理時間 秒
			double tsec = tmsec / 1000.0;

			System.out.println( "時間 : " + tnsec + "ナノ秒   "
					+ tmsec + "ミリ秒   " + tsec + "秒" );
		}
		catch( InterruptedException e )
    		{
			return;
    		}

	}
}

このソースについての記事はこちら「ストップウォッチ その2」です。

 

■新着情報

2019.09.13 長さの単位変換 1マイル、1フィートは何m?
2019.09.06 クイックソート 高速に配列に並び替える方法
2019.09.05 中央値(メディアン) 配列に格納されている値の中央値を求める
2019.09.05 最頻値 配列から出現回数が最も多い値の取得
2019.09.03 配列値の反転 配列の反転処理
2019.08.05 トランプの操作 トランプを操作するクラス

■広告

法人向けのETC専用カード

~約8,000名の受講生と80社以上の導入実績~ 企業向けプログラミング研修ならCodeCamp

日本最大級ショッピングサイト!お買い物なら楽天市場

 

 

 

 

Topへ