算法笔记_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之和非负 ...
随机推荐
- 0822JDBC--Java连接数据库
JDBC定义: JDBC全称: Java DataBase Connectivity 独立于特定数据管理系统, 通用的sql数据库存取和操作的公共接口, 是一种面向接口编程 JDB ...
- 如何用jmeter对websockt和protobuf进行压力测试
参考代码:https://github.com/hutao722/kekexinxin 这是基于Jmeter WebsocketSampler的插件,支持对基于websocket和protobuf的服 ...
- Poj1733 Parity Game(带权并查集)
题面 Poj 题解 反正只要你判断是否满足区间的奇偶性,假设每一位要么是\(1\)要么是\(0\)好了. 假设有\(S\)的前缀和为\(sum[]\),则有: 若\(S[l...r]\)中有奇数个\( ...
- 洛谷——P2784 化学1(chem1)- 化学合成
P2784 化学1(chem1)- 化学合成 题目背景 蒟蒻HansBug在化学考场上,挠了无数次的头,可脑子里还是一片空白. 题目描述 眼下出现在蒟蒻HansBug面前的是一个化学合成题,据他所知, ...
- bzoj 2073: [POI2004]PRZ
2073: [POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的 ...
- 都9102年了,还不会Docker?10分钟带你从入门操作到实战上手
Docker简述 Docker是一种OS虚拟化技术,是一个开源的应用容器引擎.它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支 ...
- Codeforces Round #344 (Div. 2) C. Report 其他
C. Report 题目连接: http://www.codeforces.com/contest/631/problem/C Description Each month Blake gets th ...
- GMT-CMSP系统维护步骤整理
一.关闭前端各服务1.北京代理,韩国代理节点nginx/etc/init.d/nginx stop2.关闭WEB1,WEB2 NGINX和PHPpkill nginx && pkill ...
- 控制台+Owin搭建WebAPI接口服务
当没有iis环境.想快速启动几个api接口测试又觉得新建一个api项目麻烦?来使用控制台做宿主,快速改几个api测试吧! 1.新建控制台项目 2.安装以下相关依赖 Microsoft.AspNet.W ...
- Web API使用记录系列(三)Web API与Owin
还好在坚持,今天继续更新第三篇随笔----使用owin来启动WebAPI(这里还是以IIS为宿主,当然也可以使用别的如Console.Windows Server等) 关于OWIN(Open Web ...