题目来自于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);
}
}`