蓝桥杯-c++_ch04_02_修正版(java)

                       算法提高 c++_ch04_02_修正版  
                    时间限制:1.0s   内存限制:256.0MB

              【题目描述】
              实现一个时间类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
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();
    }
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hello-java-maker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值