华为上机试题6(时间相加)

题目来自于http://blog.csdn.net/column/details/huaweicode.html?&page=4,原文均是用的c++,我用的java写的

题目描述
给定两个合法的时间(格式固定:hh:mm:ss,时间合法,不用考虑其它情况),输入两个时间相加后的结果;注意,相加后的结果也必需是一个合法的时间;
附合法时间定义:小时在[00-23]之间,分钟和秒分别是在[00-59]之间;
输入:

时分秒格式的时间字符串,如00:00:00
输出:

时分秒格式的时间字符串,如00:00:00
样例输入:

00:00:00 00:00:01
样例输出:

00:00:01
思路:秒,分,时分别求和取模 ,如果有进位则向上一位进位,例如秒有进位则分加一。
代码

`public class AddDate {
    public static void main(String[] args) {
        //先用两个字符串数组去接收这两个时间,
        Scanner in = new Scanner(System.in);
        String s1 = in.next();
        String s2 = in.next();
        String[] tmp1 = s1.split(":");
        String[] tmp2 = s2.split(":");
        int[] time1 = new int[3];
        int[] time2 = new int[3];
//      接着将字符串数组转换为整型数组,
        for (int i = 0; i < 3; i++) {
            time1[i] = Integer.parseInt(tmp1[i]);
            time2[i] = Integer.parseInt(tmp2[i]);
        }
        int[] time3 = new int[3];
//      时分秒分别求解,两个时间的秒数之和求对60求模就得到和的秒数
        time3[2] = (time1[2] + time2[2]) % 60;
//      分钟数之和加上秒数的进位对60求模得到和的分钟数,小时数也按此方法求出
        time3[1] = (time1[1] + time2[1] + (time1[2] + time2[2]) / 60) % 60;
        time3[0] = (time1[0] + time2[0] + (time1[1] + time2[1] + (time1[2] + time2[2]) / 60) / 60) % 24;
//      如果某一位小于10,输出时在前面加一个0
        String s = (time3[0] < 10 ? "0" + time3[0] : time3[0]) + ":"
                + (time3[1] < 10 ? "0" + time3[1] : time3[1]) + ":"
                + (time3[2] < 10 ? "0" + time3[2] : time3[2]);
        System.out.println(s);
    }
}`
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值