算法笔记_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之和非负 ...
随机推荐
- 如何去除windows下文本的^M
使用vi编辑,输入命令: :%s/^M/\r/g 用来把^M换成回车 注意的是^M要使用CTRL-V CTRL-M生成,而不是直接键入^M
- 洛谷——P1068 分数线划定
P1068 分数线划定 题目描述 世博会志愿者的选拔工作正在 A 市如火如荼的进行.为了选拔最合适的人才,A 市对 所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试.面试分数线根 据 ...
- ubuntu的boot分区报警,删除无用内核文件。
1. 查看当前使用内核:uname -r4.4.0-97-generic 2. 查看安装的内核dpkg --list 'linux-image*' 3. 删除旧内核sudo apt-get remov ...
- VMware Workstation的三种网络连接方式
桥接模式(Bridged).NAT模式(地址转换模式).仅主机模式(Host-Only) 桥接模式就是将主机网卡与虚拟机的网卡利用虚拟网桥进行通信.在桥接的作用下,类似于把物理主机虚拟为一个交换机,所 ...
- windows上同时安装两个版本的mysql数据库
一.先停止之前安装的低版本mysql服务 二.将其他电脑上安装好的mysql拷贝过来 三.拷贝过来之后,进入该文件夹,删除掉data目录,然后打开my.ini,进行修改端口号,端口号改为3307,ba ...
- JZYZOJ1502 [haoi2008]下落的圆盘 计算几何 贪心
http://172.20.6.3/Problem_Show.asp?id=1502这种题用了快一天才写出来也是真的辣鸡.主要思路就是计算一下被挡住的弧度然后对弧度进行贪心.最开始比较困扰的是求弧度值 ...
- 【动态规划】【线段树】 Codeforces Round #426 (Div. 1) B. The Bakery
给你一个序列,让你划分成K段,每段的价值是其内部权值的种类数,让你最大化所有段的价值之和. 裸dp f(i,j)=max{f(k,j-1)+w(k+1,i)}(0<=k<i) 先枚举j,然 ...
- php中NULL、false、0、" "有何区别?
php中很多还不懂php中0,"",null和false之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦.先看一个例子: <? $str ...
- HDU 3360 National Treasures(二分匹配,最小点覆盖)
National Treasures Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- express-session的简单使用说明
我们知道Internet 通过协议分为stateful和stateless两类,而http是stateless协议,客户端发送请求到服务端建立一个连接,请求得到响应后连接即中断,服务器端不会记录状态, ...