diff --git a/pom.xml b/pom.xml index 5fd8efa..7b5cfe2 100644 --- a/pom.xml +++ b/pom.xml @@ -7,6 +7,18 @@ io.zipcoder InterviewProblem5 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 1.8 + 1.8 + + + + diff --git a/src/main/java/io/zipcoder/Formatting.java b/src/main/java/io/zipcoder/Formatting.java new file mode 100644 index 0000000..32851c1 --- /dev/null +++ b/src/main/java/io/zipcoder/Formatting.java @@ -0,0 +1,74 @@ +package io.zipcoder; + +public class Formatting { + + public static String getNewTime(String s){ + String makeMilitary = convertTime(s); + String hundreds = changeFormatHundred(makeMilitary); + String hours = changeFormatHours(makeMilitary); + String militaryTime = hundreds + hours; + System.out.println(militaryTime); + return militaryTime; + } + + public static String convertTime(String s){ + if(s.contains("AM")){ + s = s.replace("AM", ""); + String[] timeArray = s.split(":"); + if(timeArray[0].equals("12")) { + timeArray[0] = "00"; + } + if(timeArray[0].equals("12") || timeArray[0].equals("11") || timeArray[0].equals("10")){ + s = timeArray[0] + ":" + timeArray[1]; + } + else if(!timeArray[0].equals("12") || timeArray[0].equals("11") || timeArray[0].equals("10")) { + s = "0" + timeArray[0] + ":" + timeArray[1]; + } + } + else if(s.contains("PM")){ + s = s.replace("PM", ""); + String[] timeArray = s.split(":"); + if(!timeArray[0].equals("12")){ + timeArray[0] = Integer.toString(Integer.parseInt(timeArray[0])+12); + } + s = timeArray[0] + ":" + timeArray[1]; + } + System.out.println(s); + return s; + } + + public static String changeFormatHundred(String s){ + String[] newTime = s.split(":"); + String hundred = NumberRepresentation.getHundred(newTime[0]); + System.out.println(hundred + " Hundred"); + return hundred + " Hundred"; + } + + public static String changeFormatHours(String s){ + String[] newTime = s.split(":"); + int result = Integer.valueOf(newTime[1]); + String newNumber = ""; + if(result < 10){ + newNumber = " Zero" + NumberRepresentation.getHours(result); + } else if(result > 10 && result < 19){ + newNumber = HigherMinuteConverter.tenToTwenty(result); + + }else if(result > 20 && result < 29){ + newNumber = " Twenty" + HigherMinuteConverter.higherMinutes(result); + + }else if(result > 30 && result < 39){ + newNumber = " Thirty" + HigherMinuteConverter.higherMinutes(result); + + }else if(result > 40 && result < 49){ + newNumber = " Forty" + HigherMinuteConverter.higherMinutes(result); + + }else if(result > 50 && result < 59){ + newNumber = " Fifty" + HigherMinuteConverter.higherMinutes(result); + + } + System.out.println(newNumber + " Hours"); + return newNumber + " Hours"; + } + +} + diff --git a/src/main/java/io/zipcoder/HigherMinuteConverter.java b/src/main/java/io/zipcoder/HigherMinuteConverter.java new file mode 100644 index 0000000..00d70ec --- /dev/null +++ b/src/main/java/io/zipcoder/HigherMinuteConverter.java @@ -0,0 +1,62 @@ +package io.zipcoder; + +public class HigherMinuteConverter { + + + public static String tenToTwenty(int i){ + String teens = ""; + switch (i){ + case 10 : teens = "Ten"; break; + case 11 : teens = "Eleven"; break; + case 12 : teens = "Twelve"; break; + case 13 : teens = "Thirteen"; break; + case 14 : teens = "Fourteen"; break; + case 15 : teens = "Fifteen"; break; + case 16 : teens = "Sixteen"; break; + case 17 : teens = "Seventeen"; break; + case 18 : teens = "Eighteen"; break; + case 19 : teens = "Nineteen"; break; + } + return teens; + } + + + public static String higherMinutes(int i){ + String higherNumbers = ""; + + if(i == 20 || i == 30 || i == 40 || i == 50) { + higherNumbers = ""; + } + else if(i == 21 || i == 31 || i == 41 || i == 51) { + higherNumbers = "one"; + } + else if(i == 22 || i == 32 || i == 42 || i == 52) { + higherNumbers = "two"; + } + else if(i == 23 || i == 33 || i == 43 || i == 53) { + higherNumbers = "three"; + } + else if(i == 24 || i == 34 || i == 44 || i == 54) { + higherNumbers = "four"; + } + else if(i == 25 || i == 35 || i == 45 || i == 55) { + higherNumbers = "five"; + } + else if(i == 26|| i == 36 || i == 46 || i == 56) { + higherNumbers = "six"; + } + else if(i == 27 || i == 37 || i == 47 || i == 57) { + higherNumbers = "seven"; + } + else if(i == 28 || i == 38 || i == 48 || i == 58) { + higherNumbers = "eight"; + } + else if(i == 29 || i == 39 || i == 49 || i == 59) { + higherNumbers = "nine"; + } + return higherNumbers; + } + + } + + diff --git a/src/main/java/io/zipcoder/NumberRepresentation.java b/src/main/java/io/zipcoder/NumberRepresentation.java new file mode 100644 index 0000000..4854e63 --- /dev/null +++ b/src/main/java/io/zipcoder/NumberRepresentation.java @@ -0,0 +1,84 @@ +package io.zipcoder; + +public class NumberRepresentation { + + public static String numberToWord = ""; + public static String intToWord = ""; + + public static String getHundred(String s) { + switch (s) { + case "00": numberToWord = "Zero"; break; + case "01": numberToWord = "Zero One"; break; + case "02": numberToWord = "Zero Two"; break; + case "03": numberToWord = "Zero Three"; break; + case "04": numberToWord = "Zero Four"; break; + case "05": numberToWord = "Zero Five"; break; + case "06": numberToWord = "Zero Six"; break; + case "07": numberToWord = "Zero Seven"; break; + case "08": numberToWord = "Zero Eight"; break; + case "09": numberToWord = "Zero Nine"; break; + case "10": numberToWord = "Ten"; break; + case "11": numberToWord = "Eleven"; break; + case "12": numberToWord = "Twelve"; break; + case "13": numberToWord = "Thirteen"; break; + case "14": numberToWord = "Fourteen"; break; + case "15": numberToWord = "Fifteen"; break; + case "16": numberToWord = "Sixteen"; break; + case "17": numberToWord = "Seventeen"; break; + case "18": numberToWord = "Eighteen"; break; + case "19": numberToWord = "Nineteen"; break; + case "20": numberToWord = "Twenty"; break; + case "21": numberToWord = "Twenty One"; break; + case "22": numberToWord = "Twenty Two"; break; + case "23": numberToWord = "Twenty Three";break; + case "24": numberToWord = "Twenty Four"; break; + } + return numberToWord; + } + + public static String getHours(int i) { + switch (i) { + case 0: { + intToWord = "Zero"; + break; + } + case 1: { + intToWord = " One"; + break; + } + case 2: { + intToWord = " Two"; + break; + } + case 3: { + intToWord = " Three"; + break; + } + case 4: { + intToWord = " Four"; + break; + } + case 5: { + intToWord = " Five"; + break; + } + case 6: { + intToWord = " Six"; + break; + } + case 7: { + intToWord = " Seven"; + break; + } + case 8: { + intToWord = " Eight"; + break; + } + case 9: { + intToWord = " Nine"; + break; + } + } + return intToWord; + } +} diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..154c549 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,9 @@ package io.zipcoder; public class Problem6 { + +public String getMilitaryTime(String s){ + String timeAsWords = Formatting.getNewTime(s); + return timeAsWords; +} } diff --git a/src/test/java/io/zipcoder/FormattingTest.java b/src/test/java/io/zipcoder/FormattingTest.java new file mode 100644 index 0000000..91f9386 --- /dev/null +++ b/src/test/java/io/zipcoder/FormattingTest.java @@ -0,0 +1,74 @@ +package io.zipcoder; + +import org.junit.Assert; +import org.junit.Test; + +public class FormattingTest { + + @Test + public void convertTimeTest(){ + //Given + String input = "1:30AM"; + String expected = "01:30"; + //When + String actual = Formatting.convertTime(input); + //Then + Assert.assertEquals(expected, actual); + } + + @Test + public void convertTimeTest2(){ + //Given + String input = "1:30PM"; + String expected = "13:30"; + //When + String actual = Formatting.convertTime(input); + //Then + Assert.assertEquals(expected, actual); + } + + @Test + public void changeFormatHundredTest(){ + //Given + String input = "01:30"; + String expected = "Zero One Hundred"; + //When + String actual = Formatting.changeFormatHundred(input); + //Then + Assert.assertEquals(expected, actual); + } + + @Test + public void changeFormatHundredTest2(){ + //Given + String input = "13:30"; + String expected = "Thirteen Hundred"; + //When + String actual = Formatting.changeFormatHundred(input); + //Then + Assert.assertEquals(expected, actual); + } + + @Test + public void changeFormatHoursTest(){ + //Given + String input = "13:03"; + String expected = " Zero Three Hours"; + //When + String actual = Formatting.changeFormatHours(input); + //Then + Assert.assertEquals(expected, actual); + } + + @Test + public void getNewTimeTest() { + //Given + String input = "11:03AM"; + String expected = "Eleven Hundred Zero Three Hours"; + //When + String actual = Formatting.getNewTime(input); + //Then + Assert.assertEquals(expected, actual); + } + +} diff --git a/src/test/java/io/zipcoder/HigherMinuteConverterTest.java b/src/test/java/io/zipcoder/HigherMinuteConverterTest.java new file mode 100644 index 0000000..5d4a582 --- /dev/null +++ b/src/test/java/io/zipcoder/HigherMinuteConverterTest.java @@ -0,0 +1,29 @@ +package io.zipcoder; + +import org.junit.Assert; +import org.junit.Test; + +public class HigherMinuteConverterTest { + + @Test + public void tenToTwentyTest(){ + //Given + int input = 11; + String expected = "Eleven"; + //When + String actual = HigherMinuteConverter.tenToTwenty(input); + //Then + Assert.assertEquals(expected, actual); + } + + @Test + public void higherMinutesTest(){ + //Given + int input = 31; + String expected = "one"; + //When + String actual = HigherMinuteConverter.higherMinutes(input); + //Then + Assert.assertEquals(expected, actual); + } +} diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..08b3912 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,4 +1,19 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class Problem6Test { + + @Test + public void getMilitaryTimeTest() { + //Given + String input = "1:03AM"; + String expected = "Zero One Hundred Zero Three Hours"; + //When + String actual = Formatting.getNewTime(input); + //Then + Assert.assertEquals(expected, actual); + } + }