蓝桥杯Date日期排列
来源:互联网 发布:nginx 线程模型 编辑:程序博客网 时间:2024/06/06 04:51
蓝桥杯结束了,混了个省赛二等奖23333,原本都已经不抱希望了。
第一道大的编程题有点不甘心,差点就完成了
输入:02-05-21
输出三种可能的年月日,并从小到大排序:
年-月-日 2002-05-21
月-日-年 2021-02-05
日-月-年 2021-05-02
(限定日期范围1951-01-01到2050-12-31)
import java.sql.Date;import java.util.Scanner;public class Datemore { //两个边界日期 static Date start = Date.valueOf("1951-01-01"); static Date end = Date.valueOf("2050-12-31"); public static void main(String[] args) { //可能的三个日期 Date a,b,c; //测试 //a = Date.valueOf("2003-02-29"); //System.out.println(a.toString()); //2003-02-29是不存在的日期,如果toString()输出,就转变成了2003-03-01 //System.out.println(); Scanner sc = new Scanner(System.in); String getin = sc.nextLine(); sc.close(); //按“-”划分成三段 String[] temp = getin.split("-"); //三种可能的排列 String aa,bb,cc; //格式化成正常的年份 if(Integer.parseInt(temp[0])>=51){ aa = "19"+temp[0]+"-"+temp[1]+"-"+temp[2]; }else{ aa = "20"+temp[0]+"-"+temp[1]+"-"+temp[2]; } if(Integer.parseInt(temp[1])>=51){ bb = "19"+temp[2]+"-"+temp[0]+"-"+temp[1]; }else{ bb = "20"+temp[2]+"-"+temp[0]+"-"+temp[1]; } if(Integer.parseInt(temp[2])>=51){ cc = "19"+temp[2]+"-"+temp[1]+"-"+temp[0]; }else{ cc = "20"+temp[2]+"-"+temp[1]+"-"+temp[0]; } try{ a = Date.valueOf(aa); //获取输入,以三种可能的顺序用valueOf格式输入到 a,b,c }catch (java.lang.IllegalArgumentException e) { //如果是不合法的输入,就置为flag 2333-03-03 //这里可以写到外部函数里去(重复代码) a = Date.valueOf("2333-03-03"); } try{ b = Date.valueOf(bb); }catch (java.lang.IllegalArgumentException e) { b = Date.valueOf("2333-03-03"); } try{ c = Date.valueOf(cc); }catch (java.lang.IllegalArgumentException e) { c = Date.valueOf("2333-03-03"); } //检查日期 a = check(a,aa); b = check(b,bb); c = check(c,cc); //输入到一个数组,从小到大排序(选排) Date[] line = {a,b,c}; Date temp2 = a; int min = 0; for(int i = 0;i<3;i++){ temp2 = line[i]; for(int j = i;j<3;j++){ if(line[j].compareTo(temp2)<0){ //compareTo(date)如果参数 date 等于此 Date,则返回值 0;如果此 Date 在 date 参数之前,则返回小于 0 的值;如果此 Date 在 date 参数之后,则返回大于 0 的值。 min = j; temp2 = line[j]; line[min] = line[i]; line[i] = temp2; } } } //输出 for (int i = 0;i<3;i++) { if(!line[i].toString().equals("2333-03-03")){ System.out.println(line[i].toString()); } } } //check()函数 private static Date check(Date t, String tt) { //如果日期不存在或不在范围内,置空(其实不好置空,干脆置一个特殊值) if(!t.toString().equals(tt)||!t.after(start)||!t.before(end)){ t = Date.valueOf("2333-03-03"); } return t; }}
0 0
- 蓝桥杯Date日期排列
- Date 日期
- date 日期
- java date 日期 date
- 完成按照日期排列
- 日期Date格式判断
- date命令(显示日期)
- 日期输入Date
- Date 日期比较
- php 日期函数 date()
- actionscript3 Date(日期)
- javascript date日期
- Date 计算日期
- php 日期函数 date
- JavaScript Date(日期)对象
- javascript Date日期对象
- shell date 当前日期
- shell date 日期转换
- 观察者模式
- ScheduledFuture
- 紫书章六例题六 小球下落 (UVA 679) (直接模拟超时,找规律)
- windows安装MySQL
- 常用linux命令
- 蓝桥杯Date日期排列
- C#之转义字符
- 格式化字符串漏洞利用 六、特殊案例
- PAT乙级(Basic Level)练习题 >母牛的故事
- 算法题-n-1的位数
- ES集群理解和安装
- 响铃:留给云计算服务企业的时间不多了,生态战成为终极一战
- 图像分割(三)——分水岭算法/边缘检测/直方图法
- SPI总线之CPOL CPHA