java一百题——7-4 然后是几点

246 阅读3分钟

这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战

7-4 然后是几点

有时候人们用四位数字表示一个时间,比如 1106 表示 11 点零 6 分。现在,你的程序要根据起始时间和流逝的时间计算出终止时间。

读入两个数字,第一个数字以这样的四位数字表示当前时间,第二个数字表示分钟数,计算当前时间经过那么多分钟后是几点,结果也表示为四位数字。当小时为个位数时,没有前导的零,例如 5 点 30 分表示为 530;0 点 30 分表示为 030。注意,第二个数字表示的分钟数可能超过 60,也可能是负数。

输入格式:

输入在一行中给出 2 个整数,分别是四位数字表示的起始时间、以及流逝的分钟数,其间以空格分隔。注意:在起始时间中,当小时为个位数时,没有前导的零,即 5 点 30 分表示为 530;0 点 30 分表示为 030。流逝的分钟数可能超过 60,也可能是负数。

输出格式:

输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间在同一天内。

输入样例:

1120 110
结尾无空行

输出样例:

1310
结尾无空行

解题思路

这一题主要是对于时间的处理,我们将时间用int型变量存储,通过除法与求余的方法将小时与分钟分割开来。

获取到小时数与分钟数,将要加的分钟数与分钟数做运算,这里需要分情况讨论,其中要加分钟数分为正负两种情况。

正负又各分两种情况。以正值举例,要加分钟数与分钟数做运算后可能超过60,对于超过60的那种情况,我们就要做额外的处理。同理,要加分钟数为负值时,也要做类似的处理。

比如 1120 ,分钟数为20 ,题目给出的要加分钟数为 110 ,加上后为 130,与60做取余运算,得到2,所以小时数要加上2。与60做除运算得到结果为10,所以最终分钟数为10。

最后就是对结果的处理,当分钟数为个位时,要补0,与格式一致。当小时为个位数时,没有前导的零。

代码

注意点

1.对于时分的拆分

2.结果中分钟数小于十需要补充0

package PTA;

import java.util.Scanner;

public class T04 {

	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int time=sc.nextInt();
		int pass=sc.nextInt();
                
		int ss=time%1000%100;
		int hh=(time-ss)/100;
		
		ss+=pass;
		if(ss<0) {
			int num=0;
			while(ss<=0) {
				ss+=60;
				num++;
			}
			hh-=num;
		}else {
			hh+=ss/60;
			ss=ss%60;
		}
		
		if(ss<10) {
			System.out.print(hh+"0"+ss);
		}
		else
			System.out.print(hh+""+ss);
	}

}