时间相加

来源:互联网 发布:顶尖数据恢复破解版 编辑:程序博客网 时间:2024/06/02 08:06

题目描述

实现两个合法时间相加
描述:    给定两个合法的时间(格式固定:hh:mm:ss,时间合法,不用考虑其它情况),输入两个时间相加后的结果;注意,相加后的结果也必需是一个合法的时间;
附合法时间定义:小时在[00-23]之间,分钟和秒分别是在[00-59]之间;
运行时间限制:    无限制
内存限制:    无限制
输入:    时分秒格式的时间字符串,如00:00:00
输出:    时分秒格式的时间字符串,如00:00:00

样例输入:    00:00:00 00:00:01
样例输出:    00:00:01
答案提示:    建议将时间转换为秒数计算

代码实现:

import java.util.Scanner;/** * 实现两个合法时间相加 * 描述:给定两个合法的时间(格式固定:hh:mm:ss,时间合法,不用考虑其它情况),输入两个时间相加后的结果; * 注意,相加后的结果也必需是一个合法的时间; * 附合法时间定义:小时在[00-23]之间,分钟和秒分别是在[00-59]之间; * 建议将时间转换为秒数计算 */public class TimeAdd {public static void main(String[] args){Scanner cin=new Scanner(System.in);String time1;String time2;while(cin.hasNext()){time1=cin.next();time2=cin.next();System.out.println(addTime(time1,time2));}}private static String addTime(String time1, String time2) {String[] time1Arr=time1.split(":");String[] time2Arr=time2.split(":");int[] result=new int[3];int carry=0;//进位,0表示不进位,1表示进位for (int i = 2; i>=0; i--) {int temp1=Integer.valueOf(time1Arr[i]);int temp2=Integer.valueOf(time2Arr[i]);int tempRes=temp1+temp2;carry=add(tempRes,i,result,carry);}StringBuilder sb=new StringBuilder();String[] rs=new String[3];for (int i = 0; i < result.length; i++) {if(result[i]<10)rs[i]="0"+result[i];elsers[i]=""+result[i];}sb.append(rs[0]).append(":").append(rs[1]).append(":").append(rs[2]);return sb.toString();}private static int add(int res, int index,int[] result,int carry) {if(index==1||index==2){res+=carry;if(res>=60){res=(res-60);carry=1;}}if(index==0){res+=carry;if(res>=24){res=(res-24);}}result[index]=res;return carry;}}

0 0
原创粉丝点击