Javaプログラミング学習サイト ゆるゆるプログラミング

・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」です。

 

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

 

 

 

 

Topへ