算法笔记_092:蓝桥杯练习 c++_ch04_02_修正版(Java)
目录
1 问题描述
实现一个时间类Time。将小时,分钟和秒存储为int型成员变量。要求该类中包含一个构造函数,访问用的函数,一个推进当前时间的函数adv(),一个重新设置当前时间(即将当前时间设为00:00:00)的函数reset()和输出结果函数print()。注意时间按数字式电子表格式显示,即小时、分、秒分别用两位表示,如果其中之一小于10,则前方补0,如22:01:00(中间不含空格),另外按该格式依次输出时、分、秒后,以endl结尾。当输入时间超出合法范围(提示:注意上下界)时,请自动按照24小时制进行转换,请务必注意时分秒为负值时的处理,如输入25:00:61,则输出应为01:01:01,输入-1:-1:-1,应该输出22:58:59。
第一步:依据题意定义Time类
class Time
{
// 请补充
};
第二步:利用如下测试程序对所编写的Time类进行测试。
int main()
{
// 当前时间
int hour, minute, second;
// 时间增量
int incr_hr, incr_min, incr_sec;
cin >> hour >> minute >> second >> incr_hr >> incr_min >> incr_sec;
Time t( hour, minute, second );
t.print();
t.adv( incr_hr, incr_min, incr_sec );
t.print();
t.reset();
t.print();
return 0;
}
第一行为初始时间,第二行为adv()后的时间,第三行为reset()后的时间
23:59:59
00:00:00
示例3:
02:04:02
00:00:00
00:22:30
00:00:00
2 解决方案
本题主要考查类的相关定义及应用,下面具体代码对于时、分、秒的数据范围处理的部分代码,可以单独写一个函数来处理,这样可以复用代码,但是为了配合题目要求,就直接把代码复制了一遍运用。
具体代码如下:
import java.util.Scanner; public class Main {
public int hour;
public int minute;
public int second; Main(int hour, int minute, int second) {
//获取秒
if(second >= 60) {
minute += second / 60;
second %= 60;
this.second = second;
} else if(second < 0) {
int temp = second / 60;
int temp1 = second % 60;
if(temp1 == 0) {
this.second = 0;
minute += temp;
} else {
this.second = 60 + temp1;
minute += temp - 1;
}
} else {
this.second = second;
}
//获取分钟
if(minute >= 60) {
hour += minute / 60;
minute %= 60;
this.minute = minute;
} else if(minute < 0) {
int temp = minute / 60;
int temp1 = minute % 60;
if(temp1 == 0) {
this.minute = 0;
hour += temp;
} else {
this.minute = 60 + temp1;
hour += temp - 1;
}
} else {
this.minute = minute;
}
//获取小时
if(hour >= 24)
this.hour = hour % 24;
else if(hour < 0)
this.hour = 24 + hour % 24;
else
this.hour = hour;
} public void adv(int hour, int minute, int second) {
second += this.second;
//获取要求格式秒
if(second >= 60) {
minute += second / 60;
second %= 60;
this.second = second;
} else if(second < 0) {
int temp = second / 60;
int temp1 = second % 60;
if(temp1 == 0) {
this.second = 0;
minute += temp;
} else {
this.second = 60 + temp1;
minute += temp - 1;
}
} else {
this.second = second;
} minute += this.minute;
//获取要求格式分钟
if(minute >= 60) {
hour += minute / 60;
minute %= 60;
this.minute = minute;
} else if(minute < 0) {
int temp = minute / 60;
int temp1 = minute % 60;
if(temp1 == 0) {
this.minute = 0;
hour += temp;
} else {
this.minute = 60 + temp1;
hour = hour + temp - 1;
}
} else {
this.minute = minute;
} hour += this.hour;
//获取要求格式小时
if(hour >= 24)
this.hour = hour % 24;
else if(hour < 0)
this.hour = 24 + hour % 24;
else
this.hour = hour; } public void reset() {
this.hour = 0;
this.minute = 0;
this.second = 0;
} public void print() {
if(hour >= 10)
System.out.print(hour+":");
else {
System.out.print("0"+hour+":");
}
if(minute >= 10)
System.out.print(minute+":");
else
System.out.print("0"+minute+":");
if(second >= 10)
System.out.print(second+"\n");
else
System.out.print("0"+second+"\n"); } public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int hour1 = in.nextInt();
int minute1 = in.nextInt();
int second1 = in.nextInt();
int hour2 = in.nextInt();
int minute2 = in.nextInt();
int second2 = in.nextInt();
Main test = new Main(hour1, minute1, second1);
test.print();
test.adv(hour2, minute2, second2);
test.print();
test.reset();
test.print();
}
}
算法笔记_092:蓝桥杯练习 c++_ch04_02_修正版(Java)的更多相关文章
- 算法笔记_077:蓝桥杯练习 K好数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4, ...
- 算法笔记_061:蓝桥杯练习 字串统计(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然 ...
- 算法笔记_123:蓝桥杯第七届省赛(Java语言B组部分习题)试题解答
目录 1 凑算式 2 方格填数 3 四平方和 1 凑算式 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A ...
- 算法笔记_057:蓝桥杯练习 最大的算式 (Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就 ...
- 算法笔记_086:蓝桥杯练习 9-2 文本加密(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 先编写函数EncryptChar,按照下述规则将给定的字符c转化(加密)为新的字符:"A"转化"B" ...
- 算法笔记_063:蓝桥杯练习 送分啦(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 这题想得分吗?想,请输出“yes”:不想,请输出“no”. 输出格式 输出包括一行,为“yes”或“no”. 2 解决方案 初步一看,这题 ...
- 算法笔记_083:蓝桥杯练习 合并石子(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求把所有石子 ...
- 算法笔记_107:蓝桥杯练习 算法提高 学霸的迷宫(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要 ...
- 算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负,bi之和非负 ...
随机推荐
- Java Eclipse插件
EasyExplore 快速打开文件所在目录1 http://sourceforge.net/projects/easystruts/ OpenExplorer 快速打开文件所在目录2 https:/ ...
- [BZOJ3238][AHOI2013]差异(后缀数组)
求和式的前两项可以直接算,问题是对于每对i,j计算LCP. 一个比较显然的性质是,LCP(i,j)是h[rk[i]+1~rk[j]]中的最小值. 从h的每个元素角度考虑,就是对每个h计算有多少对i,j ...
- 【深搜+set使用学习】POJ3050-Hopscotch
[题目大意] 给出一个5*5的方格,求出从任意一点出发走6步组成的不同序列数. [思路] dfs的水题,当作set使用方法的初次学习.每次从任意一点出发进行一次dfs,将序列加入set,最后输出set ...
- mybatis批量插入:oracle和mysql的区别
一.oracle批量插入 <insert id="save" parameterType="java.util.List"> insert into ...
- [NOIP2013 花匠] 新人解题报告
本来按照老师的要求,我学OI的第一份解题报告应是在寒假完成的关于数据结构的基础题,但由于身体原因当时未能完成,那么就在省选赛前临时写几篇吧…… 题目描述 花匠栋栋种了一排花,每株花都有自己的高度.花儿 ...
- python函数式编程之匿名函数、装饰器、偏函数
匿名函数 当我们在传入函数时,有些时候,不需要显式的定义函数,直接传入匿名函数就行.如下面 lambda x: x*x 在python中,关键字lambda表示匿名函数,冒号前面的x表示函数参数 匿名 ...
- [转]Java中fina以及static的意义
一.final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类.非抽象类成员方法和变量.你可能出于两种理解而需要阻止改变:设计或效 ...
- 班尼特·A·麦克道尔 - 一个交易者的资金管理系统(2013年5月26日)
<一个交易者的资金管理系统:如何确保利润并避免破产风险> 作 者:班尼特·A·麦克道尔 系 列:“引领时代”金融投资系列-世界交易经典译丛 出 版:万卷出版公司 字 数:155千字 阅读完 ...
- MYSQL数据库迁移总结
Auth: JinDate: 2014-04-03 前端操作,后续测试对外开放不在本文 准备阶段操作阶段后续阶段 需求:phpcms和anquanzuo在一个mysql实例中anquanzuo有一张视 ...
- ubuntu系统使用dnw下载程序
转:http://blog.chinaunix.net/uid-22030783-id-3350840.html 获得dnw4linux.tar.bz2 源码包,可在xcembed论坛下载:http: ...