• OJ-1:时钟问题【九度1553】


    题目描述:

    如图,给定任意时刻,求时针和分针的夹角(劣弧所对应的角)。

    输入:

    输入包含多组测试数据,每组测试数据由一个按hh:mm表示的时刻组成。

    输出:

    对于每组测试数据,输出一个浮点数,代表时针和分针的夹角(劣弧对应的角),用角度表示,结果保留两位小数。

    样例输入:
    03:00
    14:45
    样例输出:
    90.00
    172.50
    来源:
    2014年王道论坛计算机考研机试全真模拟考试

    我的解答:

    package jobdu.wangdao;
    
    import java.util.Scanner;
    
    /**
     * 给定任意时刻,求时针和分针的夹角(劣弧所对应的角)。
     * */
    public class Question1553 {
    
        /**
         * 计算时针位置
         * 
         * @param hour
         * @param minute
         * @return
         */
        private static double houreAngle(int hour, int minute) {
            double angle = (hour % 12 / 12.0) * 360;// 本小时的角度
            angle += (minute / 60.0) * (360 / 12);// 加上本小时走过的角度
            return angle;
        }
    
        /**
         * 计算分针位置
         * 
         * @param minute
         * @return
         */
        private static double minuteAngle(int minute) {
            double angle = (minute / 60.0) * 360;
            return angle;
        }
    
        /**
         * 计算圆周内两个刻度之间的锐夹角
         * 
         * @param hourAngle
         * @param minuteAngle
         * @return
         */
        private static double acuteAngle(double hourAngle, double minuteAngle) {
            double diff = Math.abs(hourAngle - minuteAngle);
            if (diff >= 180)
                diff = 360 - diff;
            return diff;
        }
    
        /**
         * 计算某个时刻时针分针夹角
         * 
         * @param time
         * @return
         */
        public static double clockAngle(String time) {
            int hour = Integer.parseInt(time.split(":")[0]);
            int minute = Integer.parseInt(time.split(":")[1]);
            return acuteAngle(houreAngle(hour, minute), minuteAngle(minute));
        }
    
        public static void main(String[] args) {
            @SuppressWarnings("resource")
            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNext()) {
                String time = scanner.nextLine();
                System.out.println(String.format("%.2f", clockAngle(time)));
            }
        }
    }
  • 相关阅读:
    float及清除浮动
    HTML meta标签总结与属性使用介绍
    jQuery相关知识
    FullCalendar日程设置
    Python基础知识
    波段选择
    CSS基础知识
    稀疏表示的高光谱分类
    Sass基本特性
    [Sass]混合宏
  • 原文地址:https://www.cnblogs.com/henuadtc/p/4230189.html
Copyright © 2020-2023  润新知