有一说一,这题30分,要考虑的点还是很多的。
下面的写法有点麻烦。
import java.util.Arrays;
import java.util.Scanner;
import java.util.TreeSet;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.next();
String[] numS = s.split("/");
int[] num = new int[numS.length];
int notYear = Integer.parseInt(numS[1]);
int notMonth = Integer.parseInt(numS[2]);
for (int i = 0; i < numS.length; i++) {
int n = Integer.parseInt(numS[i]);
num[i] = n;
}
Arrays.sort(num);
TreeSet<String> treeSet = new TreeSet<>();
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num.length; j++) {
if (month(num[j])) {
for (int k = 0; k < num.length; k++) {
if (day(num[k], num[j], num[i])) {
if ((num[i] == num[k] && num[i] == num[j]) || (num[j]!=notMonth && num[i] != notYear)) {
if (i != j && i != k && j != k) {
String year = "";
String month = "";
String day = "";
if (num[i] > 59) {
if (num[i] < 10) {
year = "19" + "0" + num[i];
} else {
year = "19" + num[i];
}
} else {
if (num[i] < 10) {
year = "20" + "0" + num[i];
} else {
year = "20" + num[i];
}
}
if (num[j] < 10) {
month = "0" + num[j];
} else {
month = String.valueOf(num[j]);
}
if (num[k] < 10) {
day = "0" + num[k];
} else {
day = String.valueOf(num[k]);
}
String data = year + "-" + month + "-" + day;
treeSet.add(data);
}
}
}
}
}
}
}
for(String i : treeSet){
System.out.println(i);
}
}
private static boolean month(int i) {
if (i >= 1 && i <= 12) {
return true;
} else {
return false;
}
}
private static boolean day(int i,int j,int k) {
if (i >= 1 && i <= 31) {
if( j==2 && i>29 && ( (k%4==0&&k%100!=0) || k%400==0 ) ){
return false;
}else if((j==4|j==6|j==9|j==11)&& i>30) {
return false;
}else if(j==2 && i>28 && k%4!=0){
return false;
}else {
return true;
}
} else {
return false;
}
}
}