class TalkingClock {
private static final String[] zeroToTwelve
= { "zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight", "nine", "ten", "eleven", "twelve" };
private static final String[] teens
= { "thirteen",
"fourteen",
"fifteen",
"sixteen",
"seventeen",
"eighteen",
"nineteen" };
private static final String[] twentyToFifty
= { "twenty",
"thirty",
"fourty",
"fifty" }; private static final String PREFIX
= "It's";
int hour
= Integer.
parseInt(hourString
); if (hour > 11) {
suffix = "pm";
}
if (hour > 12) {
hour = hour - 12;
}
if (hour == 0) {
hour = 12;
}
String hourInWords
= zeroToTwelve
[hour
] + " " + suffix
; return hourInWords;
}
int minutes
= Integer.
parseInt(minString
); if (minutes == 0) {
// default value of minutesString
} else if (minutes < 10) {
minutesString = "oh " + zeroToTwelve[minutes];
} else if (minutes < 13) {
minutesString = zeroToTwelve[minutes];
} else if (minutes < 20) {
minutesString = teens[minutes - 13];
} else if ((minutes % 10) == 0) {
minutesString
= twentyToFifty
[Math.
floorDiv(minutes,
20)]; } else {
minutesString
= twentyToFifty
[Math.
floorDiv(minutes,
10) - 2] + " " + zeroToTwelve
[(minutes
% 10)]; }
return minutesString;
}
private static String[] parseStringTimeToArray
(String time
) { if (time == null) {
}
String[] timeArr
= time.
split(":"); if (timeArr.length != 2) {
}
return timeArr;
}
String[] parsedTime
= parseStringTimeToArray
(time
); String[] hourWithSuffix
= hourToWords
(parsedTime
[0]).
split(" "); String hour
= hourWithSuffix
[0]; String suffix
= hourWithSuffix
[1]; String minutes
= minutesToWords
(parsedTime
[1]); if ("".equals(minutes)) {
return PREFIX + " " + hour + " " + suffix;
} else {
return PREFIX + " " + hour + " " + minutes + " " + suffix;
}
}
public static void main
(String[] args
) { String[] times
= { "00:00",
"01:30",
"12:05",
"14:01",
"20:29",
"21:00" }; System.
out.
println(timeToWords
(time
)); }
}
}
Y2xhc3MgVGFsa2luZ0Nsb2NrIHsKCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSB6ZXJvVG9Ud2VsdmUgPSB7ICJ6ZXJvIiwgIm9uZSIsICJ0d28iLCAidGhyZWUiLCAiZm91ciIsICJmaXZlIiwgInNpeCIsICJzZXZlbiIsCgkJCQkiZWlnaHQiLCAibmluZSIsICJ0ZW4iLCAiZWxldmVuIiwgInR3ZWx2ZSIgfTsKCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSB0ZWVucyA9IHsgInRoaXJ0ZWVuIiwgImZvdXJ0ZWVuIiwgImZpZnRlZW4iLCAic2l4dGVlbiIsICJzZXZlbnRlZW4iLCAiZWlnaHRlZW4iLAoJCQkJIm5pbmV0ZWVuIiB9OwoJCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHR3ZW50eVRvRmlmdHkgPSB7ICJ0d2VudHkiLCAidGhpcnR5IiwgImZvdXJ0eSIsICJmaWZ0eSIgfTsKCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJFRklYID0gIkl0J3MiOwoJCgkJcHVibGljIHN0YXRpYyBTdHJpbmcgaG91clRvV29yZHMoU3RyaW5nIGhvdXJTdHJpbmcpIHsKCQkJaW50IGhvdXIgPSBJbnRlZ2VyLnBhcnNlSW50KGhvdXJTdHJpbmcpOwoJCQlTdHJpbmcgc3VmZml4ID0gImFtIjsKCQkJaWYgKGhvdXIgPiAxMSkgewoJCQkJc3VmZml4ID0gInBtIjsKCQkJfQoJCQlpZiAoaG91ciA+IDEyKSB7CgkJCQlob3VyID0gaG91ciAtIDEyOwoJCQl9CgkJCWlmIChob3VyID09IDApIHsKCQkJCWhvdXIgPSAxMjsKCQkJfQoJCQlTdHJpbmcgaG91ckluV29yZHMgPSB6ZXJvVG9Ud2VsdmVbaG91cl0gKyAiICIgKyBzdWZmaXg7CgkJCXJldHVybiBob3VySW5Xb3JkczsKCQl9CgkKCQlwdWJsaWMgc3RhdGljIFN0cmluZyBtaW51dGVzVG9Xb3JkcyhTdHJpbmcgbWluU3RyaW5nKSB7CgkJCWludCBtaW51dGVzID0gSW50ZWdlci5wYXJzZUludChtaW5TdHJpbmcpOwoJCQlTdHJpbmcgbWludXRlc1N0cmluZyA9ICIiOwoJCQlpZiAobWludXRlcyA9PSAwKSB7CgkJCQkvLyBkZWZhdWx0IHZhbHVlIG9mIG1pbnV0ZXNTdHJpbmcKCQkJfSBlbHNlIGlmIChtaW51dGVzIDwgMTApIHsKCQkJCW1pbnV0ZXNTdHJpbmcgPSAib2ggIiArIHplcm9Ub1R3ZWx2ZVttaW51dGVzXTsKCQkJfSBlbHNlIGlmIChtaW51dGVzIDwgMTMpIHsKCQkJCW1pbnV0ZXNTdHJpbmcgPSB6ZXJvVG9Ud2VsdmVbbWludXRlc107CgkJCX0gZWxzZSBpZiAobWludXRlcyA8IDIwKSB7CgkJCQltaW51dGVzU3RyaW5nID0gdGVlbnNbbWludXRlcyAtIDEzXTsKCQkJfSBlbHNlIGlmICgobWludXRlcyAlIDEwKSA9PSAwKSB7CgkJCQltaW51dGVzU3RyaW5nID0gdHdlbnR5VG9GaWZ0eVtNYXRoLmZsb29yRGl2KG1pbnV0ZXMsIDIwKV07CgkJCX0gZWxzZSB7CgkJCQltaW51dGVzU3RyaW5nID0gdHdlbnR5VG9GaWZ0eVtNYXRoLmZsb29yRGl2KG1pbnV0ZXMsIDEwKSAtIDJdICsgIiAiICsgemVyb1RvVHdlbHZlWyhtaW51dGVzICUgMTApXTsKCQkJfQoJCQlyZXR1cm4gbWludXRlc1N0cmluZzsKCQl9CgkKCQlwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBwYXJzZVN0cmluZ1RpbWVUb0FycmF5KFN0cmluZyB0aW1lKSB7CgkJCWlmICh0aW1lID09IG51bGwpIHsKCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBpbnB1dCB0aW1lIG11c3Qgbm90IGJlIG51bGwiKTsKCQkJfQoJCQlTdHJpbmdbXSB0aW1lQXJyID0gdGltZS5zcGxpdCgiOiIpOwoJCQlpZiAodGltZUFyci5sZW5ndGggIT0gMikgewoJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGlucHV0IHRpbWUgbXVzdCBiZSBpbiBmb3JtYXQgXCJISDpNTVwiIik7CgkJCX0KCQkJcmV0dXJuIHRpbWVBcnI7CgkJfQoJCgkJcHVibGljIHN0YXRpYyBTdHJpbmcgdGltZVRvV29yZHMoU3RyaW5nIHRpbWUpIHsKCQkJU3RyaW5nW10gcGFyc2VkVGltZSA9IHBhcnNlU3RyaW5nVGltZVRvQXJyYXkodGltZSk7CgkJCVN0cmluZ1tdIGhvdXJXaXRoU3VmZml4ID0gaG91clRvV29yZHMocGFyc2VkVGltZVswXSkuc3BsaXQoIiAiKTsKCQkJU3RyaW5nIGhvdXIgPSBob3VyV2l0aFN1ZmZpeFswXTsKCQkJU3RyaW5nIHN1ZmZpeCA9IGhvdXJXaXRoU3VmZml4WzFdOwoJCQlTdHJpbmcgbWludXRlcyA9IG1pbnV0ZXNUb1dvcmRzKHBhcnNlZFRpbWVbMV0pOwoJCQlpZiAoIiIuZXF1YWxzKG1pbnV0ZXMpKSB7CgkJCQlyZXR1cm4gUFJFRklYICsgIiAiICsgaG91ciArICIgIiArIHN1ZmZpeDsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiBQUkVGSVggKyAiICIgKyBob3VyICsgIiAiICsgbWludXRlcyArICIgIiArIHN1ZmZpeDsKCQkJfQoJCgkJfQoJCQoJCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKCQkJU3RyaW5nW10gdGltZXMgPSB7ICIwMDowMCIsICIwMTozMCIsICIxMjowNSIsICIxNDowMSIsICIyMDoyOSIsICIyMTowMCIgfTsKCQkJZm9yIChTdHJpbmcgdGltZSA6IHRpbWVzKSB7CgkJCQlTeXN0ZW0ub3V0LnByaW50bG4odGltZVRvV29yZHModGltZSkpOwoJCQl9CgkJCQoJCX0KCX0=