Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * No more hiding from your alarm clock! You've decided you
- * want your computer to keep you updated on the time so
- * you're never late again. A talking clock takes a 24-hour
- * time and translates it into words.
- *
- * Input
- *
- * An hour (0-23) followed by a colon followed by the minute (0-59).
- *
- * 00:00
- * 01:30
- * 12:05
- * 14:01
- * 20:29
- * 21:00
- *
- * Output
- *
- * The time in words, using 12-hour format followed by am or pm.
- *
- * It's twelve am
- * It's one thirty am
- * It's twelve oh five pm
- * It's two oh one pm
- * It's eight twenty nine pm
- * It's nine pm
- */
- public class Main {
- public static void main(String[] args) {
- /* System.out.println("Hours:");
- for (int i = 0; i < 24; i++) {
- System.out.printf("%s = %s %s%n", i, translateHourIntoWords(i), periodOfHour(i));
- }
- System.out.println();
- System.out.println("Minutes:");
- for (int i = 0; i < 60; i++) {
- System.out.printf("%s %s%n", i, translateMinuteIntoWords(i));
- }*/
- String[] times = {"00:00", "01:30", "12:05", "14:01", "20:29", "21:00"};
- for (String time : times) {
- String timeInWords = translateTimeIntoWords(time);
- System.out.println("It's " + timeInWords);
- }
- }
- public static String translateTimeIntoWords(String time) {
- String[] arr = time.split(":");
- assert arr.length == 2;
- int hour = Integer.parseInt(arr[0]);
- int minute = Integer.parseInt(arr[1]);
- String hourInWords = translateHourIntoWords(hour);
- String period = periodOfHour(hour);
- String minuteInWords = translateMinuteIntoWords(minute);
- if (minuteInWords != null) {
- return hourInWords + " " + minuteInWords + " " + period;
- } else {
- return hourInWords + " " + period;
- }
- }
- public static String periodOfHour(int hour) {
- return hour < 12 ? "am" : "pm";
- }
- public static String translateHourIntoWords(String hour) {
- return translateHourIntoWords(Integer.parseInt(hour));
- }
- public static String translateHourIntoWords(int hour) {
- switch (hour % 12) {
- case 0: return "twelve";
- case 1: return "one";
- case 2: return "two";
- case 3: return "three";
- case 4: return "four";
- case 5: return "five";
- case 6: return "six";
- case 7: return "seven";
- case 8: return "eight";
- case 9: return "nine";
- case 10: return "ten";
- case 11: return "eleven";
- default: throw new RuntimeException();
- }
- }
- public static String translateMinuteIntoWords(String minute) {
- return translateMinuteIntoWords(Integer.parseInt(minute));
- }
- public static String translateMinuteIntoWords(int minute) {
- switch (minute) {
- case 0: return null;
- case 1: return "oh one";
- case 2: return "oh two";
- case 3: return "oh three";
- case 4: return "oh four";
- case 5: return "oh five";
- case 6: return "oh six";
- case 7: return "oh seven";
- case 8: return "oh eight";
- case 9: return "oh nine";
- case 10: return "ten";
- case 11: return "eleven";
- case 12: return "twelve";
- case 13: return "thirteen";
- case 14: return "fourteen";
- case 15: return "fifteen";
- case 16: return "sixteen";
- case 17: return "seventeen";
- case 18: return "eighteen";
- case 19: return "nineteen";
- case 20: return "twenty";
- case 30: return "thirty";
- case 40: return "forty";
- case 50: return "fifty";
- default: switch(minute % 10) {
- case 0: return translateMinuteIntoWords(minute - minute % 10);
- case 1: return translateMinuteIntoWords(minute - minute % 10) + " one";
- case 2: return translateMinuteIntoWords(minute - minute % 10) + " two";
- case 3: return translateMinuteIntoWords(minute - minute % 10) + " three";
- case 4: return translateMinuteIntoWords(minute - minute % 10) + " four";
- case 5: return translateMinuteIntoWords(minute - minute % 10) + " five";
- case 6: return translateMinuteIntoWords(minute - minute % 10) + " six";
- case 7: return translateMinuteIntoWords(minute - minute % 10) + " seven";
- case 8: return translateMinuteIntoWords(minute - minute % 10) + " eight";
- case 9: return translateMinuteIntoWords(minute - minute % 10) + " nine";
- default: throw new RuntimeException();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement