目录

1 问题描述

2 解决方案

 


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;
  }
输入格式
  输入一行,6个int类型数字,以空格间隔。
输出格式
  输出三行时间,时间格式为24小时制,xx:xx:xx,英文标点,不足两位十位数补0。
  第一行为初始时间,第二行为adv()后的时间,第三行为reset()后的时间
示例1输入
  0 0 0 0 0 -1
示例1输出
  00:00:00
  23:59:59
  00:00:00
  示例3:
示例2输入
  25 63 61 0 0 1
示例2输出
  02:04:01
  02:04:02
  00:00:00
示例3输入
  -50 -24 0 50 45 90
示例3输出
  21:36:00
  00:22:30
  00:00:00

2 解决方案

本题主要考查类的相关定义及应用,下面具体代码对于时、分、秒的数据范围处理的部分代码,可以单独写一个函数来处理,这样可以复用代码,但是为了配合题目要求,就直接把代码复制了一遍运用。

具体代码如下:

  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4. public int hour;
  5. public int minute;
  6. public int second;
  7.  
  8. Main(int hour, int minute, int second) {
  9. //获取秒
  10. if(second >= 60) {
  11. minute += second / 60;
  12. second %= 60;
  13. this.second = second;
  14. } else if(second < 0) {
  15. int temp = second / 60;
  16. int temp1 = second % 60;
  17. if(temp1 == 0) {
  18. this.second = 0;
  19. minute += temp;
  20. } else {
  21. this.second = 60 + temp1;
  22. minute += temp - 1;
  23. }
  24. } else {
  25. this.second = second;
  26. }
  27. //获取分钟
  28. if(minute >= 60) {
  29. hour += minute / 60;
  30. minute %= 60;
  31. this.minute = minute;
  32. } else if(minute < 0) {
  33. int temp = minute / 60;
  34. int temp1 = minute % 60;
  35. if(temp1 == 0) {
  36. this.minute = 0;
  37. hour += temp;
  38. } else {
  39. this.minute = 60 + temp1;
  40. hour += temp - 1;
  41. }
  42. } else {
  43. this.minute = minute;
  44. }
  45. //获取小时
  46. if(hour >= 24)
  47. this.hour = hour % 24;
  48. else if(hour < 0)
  49. this.hour = 24 + hour % 24;
  50. else
  51. this.hour = hour;
  52. }
  53.  
  54. public void adv(int hour, int minute, int second) {
  55. second += this.second;
  56. //获取要求格式秒
  57. if(second >= 60) {
  58. minute += second / 60;
  59. second %= 60;
  60. this.second = second;
  61. } else if(second < 0) {
  62. int temp = second / 60;
  63. int temp1 = second % 60;
  64. if(temp1 == 0) {
  65. this.second = 0;
  66. minute += temp;
  67. } else {
  68. this.second = 60 + temp1;
  69. minute += temp - 1;
  70. }
  71. } else {
  72. this.second = second;
  73. }
  74.  
  75. minute += this.minute;
  76. //获取要求格式分钟
  77. if(minute >= 60) {
  78. hour += minute / 60;
  79. minute %= 60;
  80. this.minute = minute;
  81. } else if(minute < 0) {
  82. int temp = minute / 60;
  83. int temp1 = minute % 60;
  84. if(temp1 == 0) {
  85. this.minute = 0;
  86. hour += temp;
  87. } else {
  88. this.minute = 60 + temp1;
  89. hour = hour + temp - 1;
  90. }
  91. } else {
  92. this.minute = minute;
  93. }
  94.  
  95. hour += this.hour;
  96. //获取要求格式小时
  97. if(hour >= 24)
  98. this.hour = hour % 24;
  99. else if(hour < 0)
  100. this.hour = 24 + hour % 24;
  101. else
  102. this.hour = hour;
  103.  
  104. }
  105.  
  106. public void reset() {
  107. this.hour = 0;
  108. this.minute = 0;
  109. this.second = 0;
  110. }
  111.  
  112. public void print() {
  113. if(hour >= 10)
  114. System.out.print(hour+":");
  115. else {
  116. System.out.print("0"+hour+":");
  117. }
  118. if(minute >= 10)
  119. System.out.print(minute+":");
  120. else
  121. System.out.print("0"+minute+":");
  122. if(second >= 10)
  123. System.out.print(second+"\n");
  124. else
  125. System.out.print("0"+second+"\n");
  126.  
  127. }
  128.  
  129. public static void main(String[] args) {
  130. Scanner in = new Scanner(System.in);
  131. int hour1 = in.nextInt();
  132. int minute1 = in.nextInt();
  133. int second1 = in.nextInt();
  134. int hour2 = in.nextInt();
  135. int minute2 = in.nextInt();
  136. int second2 = in.nextInt();
  137. Main test = new Main(hour1, minute1, second1);
  138. test.print();
  139. test.adv(hour2, minute2, second2);
  140. test.print();
  141. test.reset();
  142. test.print();
  143. }
  144. }

算法笔记_092:蓝桥杯练习 c++_ch04_02_修正版(Java)的更多相关文章

  1. 算法笔记_077:蓝桥杯练习 K好数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数.求L位K进制数中K好数的数目.例如K = 4, ...

  2. 算法笔记_061:蓝桥杯练习 字串统计(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 给定一个长度为n的字符串S,还有一个数字L,统计长度大于等于L的出现次数最多的子串(不同的出现可以相交),如果有多个,输出最长的,如果仍然 ...

  3. 算法笔记_123:蓝桥杯第七届省赛(Java语言B组部分习题)试题解答

     目录 1 凑算式 2 方格填数 3 四平方和   1 凑算式 凑算式 B DEF A + --- + ------- = 10 C GHI (如果显示有问题,可以参见[图1.jpg]) 这个算式中A ...

  4. 算法笔记_057:蓝桥杯练习 最大的算式 (Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果尽量大.因为乘号和加号一共就 ...

  5. 算法笔记_086:蓝桥杯练习 9-2 文本加密(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 先编写函数EncryptChar,按照下述规则将给定的字符c转化(加密)为新的字符:"A"转化"B" ...

  6. 算法笔记_063:蓝桥杯练习 送分啦(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 这题想得分吗?想,请输出“yes”:不想,请输出“no”. 输出格式 输出包括一行,为“yes”或“no”. 2 解决方案 初步一看,这题 ...

  7. 算法笔记_083:蓝桥杯练习 合并石子(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数.求把所有石子 ...

  8. 算法笔记_107:蓝桥杯练习 算法提高 学霸的迷宫(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要 ...

  9. 算法笔记_096:蓝桥杯练习 算法提高 求最大值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负,bi之和非负 ...

随机推荐

  1. 0822JDBC--Java连接数据库

    JDBC定义:    JDBC全称: Java DataBase Connectivity     独立于特定数据管理系统, 通用的sql数据库存取和操作的公共接口, 是一种面向接口编程    JDB ...

  2. 如何用jmeter对websockt和protobuf进行压力测试

    参考代码:https://github.com/hutao722/kekexinxin 这是基于Jmeter WebsocketSampler的插件,支持对基于websocket和protobuf的服 ...

  3. Poj1733 Parity Game(带权并查集)

    题面 Poj 题解 反正只要你判断是否满足区间的奇偶性,假设每一位要么是\(1\)要么是\(0\)好了. 假设有\(S\)的前缀和为\(sum[]\),则有: 若\(S[l...r]\)中有奇数个\( ...

  4. 洛谷——P2784 化学1(chem1)- 化学合成

    P2784 化学1(chem1)- 化学合成 题目背景 蒟蒻HansBug在化学考场上,挠了无数次的头,可脑子里还是一片空白. 题目描述 眼下出现在蒟蒻HansBug面前的是一个化学合成题,据他所知, ...

  5. bzoj 2073: [POI2004]PRZ

    2073: [POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的 ...

  6. 都9102年了,还不会Docker?10分钟带你从入门操作到实战上手

    Docker简述 Docker是一种OS虚拟化技术,是一个开源的应用容器引擎.它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中(Windows10目前也原生支 ...

  7. Codeforces Round #344 (Div. 2) C. Report 其他

    C. Report 题目连接: http://www.codeforces.com/contest/631/problem/C Description Each month Blake gets th ...

  8. GMT-CMSP系统维护步骤整理

    一.关闭前端各服务1.北京代理,韩国代理节点nginx/etc/init.d/nginx stop2.关闭WEB1,WEB2 NGINX和PHPpkill nginx && pkill ...

  9. 控制台+Owin搭建WebAPI接口服务

    当没有iis环境.想快速启动几个api接口测试又觉得新建一个api项目麻烦?来使用控制台做宿主,快速改几个api测试吧! 1.新建控制台项目 2.安装以下相关依赖 Microsoft.AspNet.W ...

  10. Web API使用记录系列(三)Web API与Owin

    还好在坚持,今天继续更新第三篇随笔----使用owin来启动WebAPI(这里还是以IIS为宿主,当然也可以使用别的如Console.Windows Server等) 关于OWIN(Open Web ...