[第十二届蓝桥杯/java/算法]F——时间显示
🧑🎓个人介绍:大二软件生,现学JAVA、Linux、MySQL、算法
💻博客主页:渡过晚枫渡过晚枫
👓系列专栏:[编程神域 C语言],[java/初学者],[蓝桥杯]📖阶段目标:备战2023蓝桥杯java个人赛
👻不能逃避,不能逃避,不能逃避,去成为更好的自己!👻
一、🍁题目描述:
小蓝要和朋友合作开发一个时间显示的网站。
在服务器上,朋友已经获取了当前的时间,用一个整数表示,值为从1970年1月1日00:00:00到当前时刻经过的毫秒数。
现在,小蓝要在客户端显示出这个时间。小蓝不用显示出年月日,只需要显示出时分秒即可,毫秒也不用显示,直接舍去即可。
给定一个用整数表示的时间,请将这个时间对应的时分秒输出。
输入描述
输入一行包含一个整数,表示时间。
输出描述
输出时分秒表示的当前时间,格式形如
HH:MM:SS
,其中
HH
表示时,值为 00 到 2323,
MM
表示分,值为 00 到 59,
SS
表示秒,值为 00 到 59。时、分、秒 不足两位时补前导 0。
二、🍁题目分析:
这题乍一看很复杂,但仔细就会发现其实很简单。
因为题目中说我们不需要考虑年月日和毫秒的影响,那不就等于说,我们可以把日期限定在一天嘛?
毫秒除以1000得到当前分钟的第几秒,
秒数除以60得到当前小时的第几分钟,
小时数除以24得到当前是这天中的第几个小时。
个人认为这题比较难得部分是我们该如何前导0,即当小时为7时,该如何在结果中输出07。
我们当然可以对结果进行判断,不满足条件的话,就在输出的时候加一个字符0。
但,这可行但不必要。
这时候,我想到了字符串的格式化——String.format()方法。
详情可见下面这篇文章:
JAVA字符串格式化-String.format()的使用http://t.csdn.cn/lT5v9在得到秒、分和时的具体数据后,我创建了一个字符串变量Date,然后利用format方法,并搭配转换符的标志"0",这个标志的作用就是我们所需要的在数字前面补0。
例如:("04d",12)的结果就是0012,("02d",9)的结果就是09。其中的4和2代表数字的位数,若相应位没有数字,则补0。
三、🍁解题代码:
package JAVA_Lanqiao_2021;
import java.util.Scanner;
public class F
{
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
long Ms=scan.nextLong();//接收整数时间——毫秒,1ms=0.001s
long S=Ms/1000;//得到有多少秒
long Minute=S/60;
long Hour=Minute/60;
String Date=String.format("%02d",Hour%24)+":"+String.format("%02d",Minute%60)+":"+String.format("%02d",S%60);
System.out.println(Date);
}
}