令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
更加麻烦的是,年份也都省略了前两位,使得文献上的一个日期,存在很多可能的日期与其对应。
比如02/03/04,可能是2002年03月04日、2004年02月03日或2004年03月02日。
给出一个文献上的日期,你能帮助小明判断有哪些可能的日期对其对应吗?
输入
----
一个日期,格式是"AA/BB/CC"。 (0 <= A, B, C <= 9)
输入
----
输出若干个不相同的日期,每个日期一行,格式是"yyyy-MM-dd"。多个日期按从早到晚排列。
样例输入
----
02/03/04
样例输出
----
2002-03-04
2004-02-03
2004-03-02
资源约定:
峰值内存消耗(含虚拟机) < 256M
CPU消耗 < 1000ms
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
不要使用package语句。不要使用jdk1.7及以上版本的特性。
主类的名字必须是:Main,否则按无效代码处理。
代码:
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
String s=cin.nextLine();
char[] c=s.toCharArray();
int a=(c[0]-'0')*10+(c[1]-'0');
int b=(c[3]-'0')*10+(c[4]-'0');
int d=(c[6]-'0')*10+(c[7]-'0');
//年月日
int flag=1;
int e;
if(a<60) e=a+2000;
else e=a+1900;
switch (b) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if(d>31||d<1) flag=0;
break;
case 4: case 6: case 9: case 11:
if(d>30||d<1) flag=0;
break;
case 2:
if(e%400==0||(e%4==0&&e%100!=0)){
if(d>29||d<1) flag=0;
}
else if(d>28||d<1) flag=0;
break;
default:
flag=0;
break;
}
if(flag==1)
System.out.println(e+"-"+String.format("%02d",b)+"-"+String.format("%02d",d));
else flag=1;
//月日年
if(d<60) e=d+2000;
else e=d+1900;
switch (a) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if(b>31||b<1) flag=0;
break;
case 4: case 6: case 9: case 11:
if(b>30||b<1) flag=0;
break;
case 2:
if(e%400==0||(e%4==0&&e%100!=0)){
if(b>29||b<1) flag=0;
}
else if(b>28||b<1) flag=0;
break;
default:
flag=0;
break;
}
if(flag==1)
System.out.println(e+"-"+String.format("%02d",a)+"-"+String.format("%02d",b));
else flag=1;
//日月年
if(d<60) e=d+2000;
else e=d+1900;
switch (b) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if(a>31||a<1) flag=0;
break;
case 4: case 6: case 9: case 11:
if(a>30||a<1) flag=0;
break;
case 2:
if(e%400==0||(e%4==0&&e%100!=0)){
if(a>29||a<1) flag=0;
}
else if(a>28||a<1) flag=0;
break;
default:
flag=0;
break;
}
if(flag==1)
System.out.println(e+"-"+String.format("%02d",b)+"-"+String.format("%02d",a));
else flag=1;
}
}
瑟瑟发抖的贴上代码,没地方能测试好害怕,队友队友你会看到的对不对,哪里有错记得告诉我。。。。。。队友:让我看这么水的东西对得起我么。。。。。。。哈哈哈哈