栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

第十二届蓝桥杯省赛 Java 大学 B 组—时间显示—满分题解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

第十二届蓝桥杯省赛 Java 大学 B 组—时间显示—满分题解

第十二届蓝桥杯省赛 Java 大学 B 组—时间显示



一、解题思路 1、解法一( Java )

解法思路:模拟
☝res int 型不能满足所有评测用例,应该定义为 long 型
☝rem 是东八区时间 8 个小时的偏移量毫秒数
☝SimpleDateFormat("HH:mm:ss")时间输出格式(注意分钟对应是小写的 mm ,是为了区分月份对应大写的 MM )

Date date2 = new Date(0);
System.out.println(date2);
//输出结果是Thu Jan 01 08:00:00 CST 1970

伪代码如下:

import java.text.SimpleDateFormat;
 
public class Main {
	public static void main(String[] args) {
		long rem = 8 * 60 * 60 * 1000;//定义偏移量
		Scanner scanner = new Scanner(System.in);
		long res = scanner.nextLong();// 获取经过的毫秒数
		Date date = new Date(res - rem);
		SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");//定义输出格式
		String string = sdf.format(date);
		System.out.println(string);
		scanner.close();
	}
}
1、解法二( Java )

解法思路:模拟
☝res int 型不能满足所有评测用例,应该定义为 long 型
☝rem 是东八区时间 8 个小时的偏移量毫秒数
☝setTime() 设置时间(减去时间偏移量 rem )
☝toString() Date类重写了 toString() 方法,输出格式是EEE MMM dd HH:mm:ss zzz yyyy (举个栗子:毫秒数 67567567567 对应的具体时间是 Tue Feb 22 00:46:07 CST 1972),所以需要使用 subString() 方法截取指定 11 - 19部分输出(空格算一个字符)
☝substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex。

伪代码如下:

import java.util.Date;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		long rem = 8 * 60 * 60 * 1000;
		long res = scanner.nextLong();
		Date date = new Date();
		date.setTime(res - rem);
		System.out.println(date.toString().substring(11, 19));
	}

}

运行结果截图如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785159.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号