7-2 然后是几点 (15 分)

7-2 然后是几点 (15 分)

一、题目要求

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

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

输入格式:

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

输出格式:

输出四位数字表示的终止时间。题目保证起始时间和终止时间在同一天内。

输入样例:

1120 110

输出样例:

1310

二、代码

版本1:直觉破解


// V1.0
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		int begin=0, pass_minute=0, end;
		int oHour=0, oMinute=0, hour=0, minute=0;
		
		Scanner sc = new Scanner(System.in); 
		begin = sc.nextInt(); 
		pass_minute = sc.nextInt();
		
		oHour = begin/100 + pass_minute/60;    // 初始小时转换
		oMinute = begin%100 + pass_minute%60;  // 初始分钟转换
		
//		System.out.println("oHour:"+oHour +" " + "oMinute:" + oMinute);	
		
		hour = oHour + oMinute/60;  // 意外处理,如分钟进/退位
		minute = oMinute%60;		
	    
		if (minute<0) {
			hour = hour -1;
			minute = minute + 60;
		}
		
		System.out.println(hour + String.format("%02d", minute));

	}
}

版本二:转化为总分钟,再转为小时&分钟进行输出

// V2.0
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		int begin=0, pass_minute=0, end;
		int hour=0, minute=0;
		
		Scanner sc = new Scanner(System.in); 
		begin = sc.nextInt(); 
		pass_minute = sc.nextInt();

		minute = begin/100*60 + begin%100 + pass_minute;  // 总分钟
		hour = minute/60;
		minute = minute%60;
		
		System.out.println(hour + String.format("%02d", minute));

	}

}

版本三、转化为总分钟,再转为十进制的小时分钟

// 2.5
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		int begin=0, pass_minute=0, end;
		int hour=0, minute=0;
		
		Scanner sc = new Scanner(System.in); 
		begin = sc.nextInt(); 
		pass_minute = sc.nextInt();

		minute = begin/100*60 + begin%100 + pass_minute;
		end = minute/60*100 + minute%60;
		
		System.out.println(end);
		
	}

}

三、分析&&收获

1、注意输出格式

可能有05:30,应输出为530.

2、不断迭代

从这个小练习可以看到,优化存在很大的空间,一方面需要在原有方法思路上做优化,另一方面换个思路方法才能有质的突破。而实际工程代码的规模比这大多了,可优化空间也有非常多。

你可能感兴趣的:(PTA,时间,小时分钟,然后是几点)