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 日期时间 | 菜鸟教程

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

你可能感兴趣的:(算法题,java)