From c1843a4673b1db022594c0d1c3e26d28413bcb1a Mon Sep 17 00:00:00 2001 From: Bo Lee Date: Fri, 13 Apr 2018 10:25:02 -0400 Subject: [PATCH 1/2] complete --- pom.xml | 5 ++ src/main/java/io/zipcoder/Problem6.java | 78 +++++++++++++++++++++ src/test/java/io/zipcoder/Problem6Test.java | 61 ++++++++++++++++ 3 files changed, 144 insertions(+) diff --git a/pom.xml b/pom.xml index 5fd8efa..d032321 100644 --- a/pom.xml +++ b/pom.xml @@ -16,6 +16,11 @@ 4.12 test + + junit + junit + 4.12 + \ No newline at end of file diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..2ebb760 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,82 @@ package io.zipcoder; +//Given a time given as a String in numerical format, +// convert that value into its military time phrase. + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class Problem6 { + + private String time; + + public Problem6(String time) { + this.time = time; + } + + + + public String convertToMilitaryTimePhrase() { + String timePattern = "(1[012]|[1-9]):([0-5][0-9])(am|pm)"; + + Pattern pattern = Pattern.compile(timePattern); + Matcher matcher = pattern.matcher(time); + + + String[] minutesDigitsZeroToFiftyNine = { + "zero", "zero one", "zero two", "zero three", "zero four", "zero five", + "zero six", "zero seven", "zero eight", "zero nine", "ten", + "eleven", "twelve", "thirteen", "fourteen", "fifteen", + "sixteen", "seventeen","eighteen", "nineteen","twenty", + "twenty one", "twenty two", "twenty three","twenty four", "twenty five", + "twenty six", "twenty seven", "twenty eight", "twenty nine", "thirty", + "thirty one" ,"thirty two", "thirty-three", "thirty four", "thirty five", + "thirty six", "thirty seven", "thirty eight", "thirty nine", "forty", + "forty one", "forty two", "forty three", "forty four", "forty five", + "forty six", "forty seven", "forty eight", "forty nine", "fifty", + "fifty one", "fifty two", "fifty three", "fifty four", "fifty five", + "fifty six", "fifty seven", "fifty eight", "fifty nine"}; + + + + + int hourNumber = 0; + int minutesNumber = 0; + String amOrPm = ""; + if(matcher.find()){ + hourNumber += Integer.valueOf(matcher.group(1)); + minutesNumber+= Integer.valueOf(matcher.group(2)); + amOrPm+=(matcher.group(3)); + } + + if(amOrPm.equals("pm")){ + hourNumber+=12; + } + + String newTime =""; + if(minutesNumber< 10){ + newTime = minutesDigitsZeroToFiftyNine[hourNumber] + " hundred " + minutesDigitsZeroToFiftyNine[minutesNumber] + " hours"; + + } + else { + newTime = minutesDigitsZeroToFiftyNine[hourNumber] + " hundred and " + minutesDigitsZeroToFiftyNine[minutesNumber] + " hours"; + } + return camelCaseSentence(newTime); + + } + + public String camelCaseSentence(String str){ + String [] temp = str.split(" "); + StringBuilder sentence = new StringBuilder(); + for (int i = 0; i < temp.length; i++) { + sentence.append(temp[i].substring(0,1).toUpperCase()); + sentence.append(temp[i].substring(1)); + sentence.append(" "); + } + sentence.trimToSize(); + String finalSentence = sentence.toString(); + return finalSentence.replaceAll("[A|a][n][d]", "and"); + + } + } diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..8711ac8 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,4 +1,65 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + public class Problem6Test { + + @Test + public void problemTest1(){ + + Problem6 problem6 = new Problem6("1:30pm"); + + String expected = "Thirteen Hundred and Thirty Hours "; + String actual = problem6.convertToMilitaryTimePhrase(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void problemTest2(){ + + Problem6 problem6 = new Problem6("1:30am"); + + String expected = "Zero One Hundred and Thirty Hours "; + String actual = problem6.convertToMilitaryTimePhrase(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void problemTest3(){ + + Problem6 problem6 = new Problem6("2:22pm"); + + String expected = "Fourteen Hundred and Twenty Two Hours "; + String actual = problem6.convertToMilitaryTimePhrase(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void problemTest4(){ + + Problem6 problem6 = new Problem6("2:11am"); + + String expected = "Zero Two Hundred and Eleven Hours "; + String actual = problem6.convertToMilitaryTimePhrase(); + + Assert.assertEquals(expected, actual); + } + + @Test + public void problemTest5(){ + + Problem6 problem6 = new Problem6("10:02am"); + + String expected = "Ten Hundred Zero Two Hours "; + String actual = problem6.convertToMilitaryTimePhrase(); + + Assert.assertEquals(expected, actual); + } } + From bc7847681f7987cdee72a5058f132b887e3b1a57 Mon Sep 17 00:00:00 2001 From: Bo Lee Date: Fri, 13 Apr 2018 10:28:11 -0400 Subject: [PATCH 2/2] added a test case --- src/test/java/io/zipcoder/Problem6Test.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index 8711ac8..1dafa96 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -61,5 +61,17 @@ public void problemTest5(){ Assert.assertEquals(expected, actual); } + + @Test + public void camelCaseSentence(){ + Problem6 problem6 = new Problem6("10:02am"); + + String actual = problem6.camelCaseSentence("ten hundred zero two hours "); + String expected = "Ten Hundred Zero Two Hours "; + Assert.assertEquals(expected, actual); + + + + } }