class Ideone
{
private static boolean isDigits
(String t,
int length
) { int l = t.length();
if (l != length) return false;
for (int i = 0; i < l; i++) {
char tmp = t.charAt(i);
if (tmp < '0' || tmp > '9') return false;
}
return true;
}
private static boolean validDate
(String date
) {
int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};
String[] parts
= date.
split("-"); if (parts.length != 3) return false;
if (!isDigits(parts[0], 2)) return false;
int day
= Integer.
parseInt(parts
[0]); if (day < 1 || day > 31) return false;
if (!isDigits(parts[1], 2)) return false;
int month
= Integer.
parseInt(parts
[1]); if (month < 1 || month > 12) return false;
if (day > days[month-1]) return false;
if (!isDigits(parts[2], 2)) return false;
int year
= Integer.
parseInt(parts
[2]);
return true;
}
private static void test
(String date
) { String valid
= validDate
(date
) ? "is" : "isn't"; System.
out.
println(date
+ " " + valid
+ " a valid date."); }
{
test("34-12-00");
test("31-12-yy");
test("31-02-14");
test("22-10-14");
}
}
Y2xhc3MgSWRlb25lCnsKCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNEaWdpdHMoU3RyaW5nIHQsIGludCBsZW5ndGgpIHsKCQlpbnQgbCA9IHQubGVuZ3RoKCk7CgkJaWYgKGwgIT0gbGVuZ3RoKSByZXR1cm4gZmFsc2U7CgkJZm9yIChpbnQgaSA9IDA7IGkgPCBsOyBpKyspIHsKCQkJY2hhciB0bXAgPSB0LmNoYXJBdChpKTsKCQkJaWYgKHRtcCA8ICcwJyB8fCB0bXAgPiAnOScpIHJldHVybiBmYWxzZTsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgkKCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gdmFsaWREYXRlKFN0cmluZyBkYXRlKSB7CgkJCgkJaW50W10gZGF5cyA9IHszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMX07CgoJCVN0cmluZ1tdIHBhcnRzID0gZGF0ZS5zcGxpdCgiLSIpOwoJCWlmIChwYXJ0cy5sZW5ndGggIT0gMykgcmV0dXJuIGZhbHNlOwoJCQoJCWlmICghaXNEaWdpdHMocGFydHNbMF0sIDIpKSByZXR1cm4gZmFsc2U7CgkJaW50IGRheSA9IEludGVnZXIucGFyc2VJbnQocGFydHNbMF0pOwoJCWlmIChkYXkgPCAxIHx8IGRheSA+IDMxKSByZXR1cm4gZmFsc2U7CgkJCgkJaWYgKCFpc0RpZ2l0cyhwYXJ0c1sxXSwgMikpIHJldHVybiBmYWxzZTsKCQlpbnQgbW9udGggPSBJbnRlZ2VyLnBhcnNlSW50KHBhcnRzWzFdKTsKCQlpZiAobW9udGggPCAxIHx8IG1vbnRoID4gMTIpIHJldHVybiBmYWxzZTsKCQkKCQlpZiAoZGF5ID4gZGF5c1ttb250aC0xXSkgcmV0dXJuIGZhbHNlOwoJCQoJCWlmICghaXNEaWdpdHMocGFydHNbMl0sIDIpKSByZXR1cm4gZmFsc2U7CgkJaW50IHllYXIgPSBJbnRlZ2VyLnBhcnNlSW50KHBhcnRzWzJdKTsKCQkKCQlyZXR1cm4gdHJ1ZTsKCX0KCQoJcHJpdmF0ZSBzdGF0aWMgdm9pZCB0ZXN0KFN0cmluZyBkYXRlKSB7CgkJU3RyaW5nIHZhbGlkID0gdmFsaWREYXRlKGRhdGUpID8gImlzIiA6ICJpc24ndCI7CgkJU3lzdGVtLm91dC5wcmludGxuKGRhdGUgKyAiICIgKyB2YWxpZCArICIgYSB2YWxpZCBkYXRlLiIpOwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQl0ZXN0KCIzNC0xMi0wMCIpOwoJCXRlc3QoIjMxLTEyLXl5Iik7CgkJdGVzdCgiMzEtMDItMTQiKTsKCQl0ZXN0KCIyMi0xMC0xNCIpOwoJfQp9