P5707 【深基2.例12】上学迟到

一、前言

        这个题可以说到处都是坑。。。不过用 Java 来解决的话似乎稍微轻松一些,不需要考虑那么多的坑。话不多说开整。

二、代码与解析

import java.util.*;
import java.text.SimpleDateFormat;
public class Main{
    public static void main(String[] args){
      Scanner scan=new Scanner(System.in);
      int s,v;
      s=scan.nextInt();
      v=scan.nextInt();
      Calendar date=Calendar.getInstance();//是一个用于获取Calendar对象的静态方法。这个方法返回一个表示当前日期和时间的Calendar对象,使用默认的时区和区域设置。
      date.set(2024,Calendar.JANUARY,19,8,0,0);//这行代码表示将时间设定为2024年1月19日08:00:00。这样的Calendar对象可以用于进行日期和时间的计算、格式化等操作。
      date.add(Calendar.MINUTE,-10);/*将Calendar对象的时间往前调整了10分钟。如果date表示的是2024年1月19日08:00:00,经过这行代码后,date将表示2024年1月19日07:50:00,对应捡垃圾的十分钟,实际上直接把时间设定为07:50也可以。*/
      date.add(Calendar.MINUTE,s%v==0?-(s/v):-(s/v)-1);/*这里采用三目运算符,如果路程除以速度恰好可以整除,那么就正好是“-(s/v)”,如果有余数,那么就要“-[(s/v)+1]“,
这样才能确保不迟到。举个例子,100 的距离,99的速度,相除之后是 1.010101...,那么就要选择第二种情况因为没除尽,假如没向上取整,那么就是-1,是 7:49,但是这样会迟到,
因为十分钟的捡垃圾时间后是 7:59,还剩一分钟,不够了,因此 1.0101...要向上取整变成 2,这样 7:48 时间就是够的。*/
      SimpleDateFormat fmt=new SimpleDateFormat("HH:mm");//创建了一个 SimpleDateFormat 对象,该对象用于格式化时间,使其以 24 小时制的小时和分钟显示。其中HH:表示小时,采用 24 小时制。mm:表示分钟。注意大小写。
      System.out.println(fmt.format(date.getTime()));//date.getTime()获取date对象的时间戳,即自1970年1月1日00:00:00 GMT 以来的毫秒数。fmt.format(date.getTime())使用 SimpleDateFormat对象fmt将时间戳格式化成字符串。
  }
}

具体解释我都已经和代码写在一起了,如果有不明白的地方欢迎给我留言。
 

三、拓展

Java 日期时间 | 菜鸟教程

有余力的话大家可以去看看这里的详细讲解。

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Helios@

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

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

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

打赏作者

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

抵扣说明:

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

余额充值