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

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

時間と分を指定し、アナログ時計の短針と長針の間の角度を出力するJavaソースコードです。角度は、短針を時計まわりに回して長針に追いついた角度を出力します。例えば時間に3,

分に0を指定した場合、270度を出力します。

このソースについての記事はこちら「短針と長針の角度」です。

ClockHandtoDegree.javaをダウンロード

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

import java.util.Scanner;

public class ClockHandtoDegree {
	// 短針(the hour-hand)の角度を時と分から計算
	// 角度は0時を0度として時計回りにプラス
	// 計測不能時は、-1.0を戻す
	static double getHourHandDeg( int hour, int minute )
	{
		// 時が0未満の場合-1.0を戻す(エラー)
		if ( 0 > hour ) return -1.0;

		// 分が0未満の場合-1.0を戻す(エラー)
		if ( 0 > minute ) return -1.0;

		// 分が59を超える場合-1.0を戻す(エラー)
		if ( 59 < minute ) return -1.0;

		// 時間を0~12に変換
		hour = hour % 12;

		// 時から計算した短針の角度
		double hh_deg;
		hh_deg = ( 360.0 / 12.0 ) * (double)hour;

		// 分から計算した長針の角度
		double mh_deg;
		mh_deg = ( 360.0 / 12.0 / 60.0 ) * (double)minute;

		// 結果を戻す
		return hh_deg + mh_deg;
	}


	// 長針(the minute-hand)の角度を分から計算
	// 角度は0分を0度として時計回りにプラス
	// 計測不能時は、-1.0を戻す
	static double getMinuteHandDeg( int minute )
	{
		// 分が0未満の場合-1.0を戻す(エラー)
		if ( 0 > minute ) return -1.0;

		// 分が59を超える場合-1.0を戻す(エラー)
		if ( 59 < minute ) return -1.0;

		// 結果を戻す
		return ( 360.0 / 60.0 ) * (double)minute;
	}


	// 短針→長針の時計周りの角度を計算
	// 計測不能時は、-1.0を戻す
	static double getClockHandDeg( int hour, int minute )
	{
		// 短針の角度
		double hh_deg = getHourHandDeg( hour, minute );
		if ( 0.0 > hh_deg ) return -1.0;

		// 長針の角度
		double mh_deg = getMinuteHandDeg( minute );
		if ( 0.0 > mh_deg ) return -1.0;

		// 短針→長針の角度
		double clock_deg = mh_deg - hh_deg;

		// 計算結果がマイナスの場合、360を足してプラスにする
		if ( 0.0 > clock_deg )
			clock_deg += 360.0;
			
		return clock_deg;
	}


	// メイン
	public static void main( String[] args ) {
		// 整数の値をキーボードから入力
		Scanner scanner = new Scanner( System.in );

		// 時間の入力
		System.out.print( "時間を整数で入力してください:" );
    		String h = scanner.next();
		int hour = Integer.parseInt( h );

		// 分の入力
		System.out.print( "分を整数で入力してください:" );
    		String m = scanner.next();
		int minute = Integer.parseInt( m );
		
		// 短針→長針の角度を計算
		double clock_deg = getClockHandDeg( hour, minute );

		// 結果出力
		System.out.println( "時刻: " + hour + ":" + minute );
		System.out.println( "角度: " + clock_deg );
	}
}

このソースについての記事はこちら「短針と長針の角度」です。

 

■新着情報

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

■広告

 

 

 

 

Topへ