算法笔记_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之和非负 ...
随机推荐
- HDU 6071 Lazy Running (同余最短路)
Lazy Running Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others)To ...
- ARC-100 E - Or Plus Max
题面在这里! 我们如果可以求出 f[x] = max{ a[i] + a[j] , i!=j && i or j == x},那么就可以通过前缀max直接递推答案了. 但是这个玩意不是 ...
- 【搜索】【约数个数定理】[HAOI2007]反素数ant
对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4.如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数. 所以,n以内的反质数即为不超过n的 ...
- 【无源汇有上下界可行流】ACdream1211-Reactor Cooling
[题意] 给出一些边流量的上界和下界,问能否循环流通. [思路] 黄学长讲得很清楚,直接贴过来: 上界用ci表示,下界用bi表示. 下界是必须流满的,那么对于每一条边,去掉下界后,其自由流为ci– b ...
- [DesignPattern]Builder设计模式
模式的定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 模式的使用场景 相同的方法,不同的执行顺序,产生不同的事件结果时: 多个部件或零件,都可以装配到一个对象中,但是 ...
- uva1632 (区间DP)
题意:有n个宝藏,在x轴上,每个宝藏在某个时间会消失,问最少吃完所有宝藏的时间是多少,否则输出no solution 分析:区间DP,f[i][j][01]代表i到j区间内的全部吃完,停留在左/右端, ...
- 通过OpenVPN来穿越上网(未实践)
说明: 1.其实OpenVPN可以通过其实现穿越来上网,即全部请求都经过OpenVPN来处理.其原理是iptables转发.如果全程走iptables也是可以的,网上的教程基本都是基于iptables ...
- 使用eclipse远程调试weblogic
配置weblogic远程调试之前,需要做这几个工作: 1) 安装weblogic服务器,然后创建一个域: 2) 安装eclipse集成IDE: 3) eclipse中包含发布 ...
- javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Invalid property in <set>: "age2"
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- 基于t-io的MI工具实现
原文:https://my.oschina.net/u/2984386/blog/1630300 背景介绍 t-io是一款国产开源的网络编程框架,主要是特点:简单,易上手,AIP封装通俗易懂,适合一般 ...