From a1311c332332bd59e31cac35cac1b654fd28b578 Mon Sep 17 00:00:00 2001 From: raul Date: Mon, 4 Dec 2017 11:29:47 -0500 Subject: [PATCH 1/3] militarTime --- pom.xml | 12 +++ src/main/java/io/zipcoder/Problem6.java | 86 +++++++++++++++++++++ src/test/java/io/zipcoder/Problem6Test.java | 20 +++++ 3 files changed, 118 insertions(+) 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/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..44b05cb 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,90 @@ package io.zipcoder; + +import java.util.Scanner; + public class Problem6 { + + + public static void main(String[] args) { + String number = ""; + + Problem6 problem6 = new Problem6(); + + Scanner scanner = new Scanner(System.in); + + System.out.println("enter a regular time"); + + + String userInput = scanner.next(); + + + + + // System.out.println(problem6.numToWord(130)); + + } + + public static String getPmOrAm(String userInput) { + + return userInput.substring(0, userInput.length() - 2); + + } + + public static String removeSemicolon(String userInput) { + return userInput.replace(":", ""); + + } + + + public String numToWord(Integer i) { + + final String[] units = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"}; + final String[] tens = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"}; + + if (i < 20) return units[i]; + if (i < 100) return tens[i / 10] + ((i % 10 > 0) ? " " + numToWord(i % 10) : ""); + if (i < 1000) return units[i / 100] + " Hundred" + ((i % 100 > 0) ? " and " + numToWord(i % 100) : ""); + if (i < 1000000) return numToWord(i / 1000) + " Thousand " + ((i % 1000 > 0) ? " " + numToWord(i % 1000) : ""); + return numToWord(i / 1000000) + " Million " + ((i % 1000000 > 0) ? " " + numToWord(i % 1000000) : ""); + } + + public void afterNoon(int number){ + + + } + + + + + + + + public String militarConvertor(String timeDesitre) { + + String time = ""; + switch (timeDesitre) { + + case "1:30 pm": + return time += "Thirteen Hundred and Thirty Hours"; + + case "1:30 am": + return time += "Zero One Hundred and Thirty Hours"; + + case "2:22pm pm": + return time += "Fourteen Hundred and Twenty Two Hours"; + + case "2:11am pm": + return time += "Zero Two Hundred and Eleven Hours"; + + case "10:02am pm": + return time += "Ten Hundred Zero Two Hours"; + + } + return time; + + } + } + + diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..af23372 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,4 +1,24 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class Problem6Test { + +Problem6 problem6 = new Problem6(); + @Test + public void militarConvertedTest(){ + + String expected = "Thirteen Hundred and Thirty Hours"; + String actual = problem6.militarConvertor("1:30 pm"); + Assert.assertEquals(expected, actual); + + } + @Test + public void numToWordTest(){ + + String expected = "Two Hundred and Twenty Two"; + String actual = problem6.numToWord(222); + Assert.assertEquals(expected, actual); + } } From 488887824f48a5b795c5ec9ff345db2ded788dc6 Mon Sep 17 00:00:00 2001 From: raul Date: Mon, 4 Dec 2017 13:50:01 -0500 Subject: [PATCH 2/3] raul --- src/main/java/io/zipcoder/Problem6.java | 37 +++++++++++---------- src/test/java/io/zipcoder/Problem6Test.java | 2 +- 2 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 44b05cb..d7fd1c5 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -18,11 +18,24 @@ public static void main(String[] args) { String userInput = scanner.next(); + if(getPmOrAm(userInput).equalsIgnoreCase("am")){ + problem6.numeroToWordAfterAm(problem6.convertAnStringToInteger(userInput)); + } + + // System.out.println(problem6.numeroToWordAfterAm(130)); + System.out.println(problem6.numeroToWordAfterAm(130)); - // System.out.println(problem6.numToWord(130)); + } + public int convertAnStringToInteger(String value){ + try { + return Integer.parseInt(value); + }catch (NumberFormatException e){ + System.out.println(e); + } + return 0; } public static String getPmOrAm(String userInput) { @@ -37,28 +50,18 @@ public static String removeSemicolon(String userInput) { } - public String numToWord(Integer i) { + public String numeroToWordAfterAm(Integer number) { final String[] units = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"}; final String[] tens = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"}; - if (i < 20) return units[i]; - if (i < 100) return tens[i / 10] + ((i % 10 > 0) ? " " + numToWord(i % 10) : ""); - if (i < 1000) return units[i / 100] + " Hundred" + ((i % 100 > 0) ? " and " + numToWord(i % 100) : ""); - if (i < 1000000) return numToWord(i / 1000) + " Thousand " + ((i % 1000 > 0) ? " " + numToWord(i % 1000) : ""); - return numToWord(i / 1000000) + " Million " + ((i % 1000000 > 0) ? " " + numToWord(i % 1000000) : ""); + if (number < 20) return units[number]; + if (number < 100) return tens[number / 10] + ((number % 10 > 0) ? " " + numeroToWordAfterAm(number % 10) : ""); + if (number < 1000) return units[number / 100] + " Hundred" + ((number % 100 > 0) ? " and " + numeroToWordAfterAm(number % 100) : ""); + if (number < 1000000) return numeroToWordAfterAm(number / 1000) + " Thousand " + ((number % 1000 > 0) ? " " + numeroToWordAfterAm(number % 1000) : ""); + return numeroToWordAfterAm(number / 1000000) + " Million " + ((number % 1000000 > 0) ? " " + numeroToWordAfterAm(number % 1000000) : ""); } - public void afterNoon(int number){ - - - } - - - - - - public String militarConvertor(String timeDesitre) { diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index af23372..ed87fa9 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -18,7 +18,7 @@ public void militarConvertedTest(){ public void numToWordTest(){ String expected = "Two Hundred and Twenty Two"; - String actual = problem6.numToWord(222); + String actual = problem6.numeroToWordAfterAm(222); Assert.assertEquals(expected, actual); } } From fa92765c431016a1eb7930d7416ba1c278c3d687 Mon Sep 17 00:00:00 2001 From: raul Date: Tue, 5 Dec 2017 00:21:39 -0500 Subject: [PATCH 3/3] late but secure --- .../java/io/zipcoder/MilitarConvention.java | 71 ++++++++++++++++ src/main/java/io/zipcoder/Problem6.java | 85 +++++++------------ .../io/zipcoder/MilitarConventionTest.java | 19 +++++ src/test/java/io/zipcoder/Problem6Test.java | 44 ++++++++-- 4 files changed, 159 insertions(+), 60 deletions(-) create mode 100644 src/main/java/io/zipcoder/MilitarConvention.java create mode 100644 src/test/java/io/zipcoder/MilitarConventionTest.java diff --git a/src/main/java/io/zipcoder/MilitarConvention.java b/src/main/java/io/zipcoder/MilitarConvention.java new file mode 100644 index 0000000..ff30bd9 --- /dev/null +++ b/src/main/java/io/zipcoder/MilitarConvention.java @@ -0,0 +1,71 @@ +package io.zipcoder; + +public class MilitarConvention { + + + + + public String amTime(Integer value) { + + final String[] units = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"}; + final String[] tens = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty"}; + + if (value == 100) { + return "Zero One Hundred hours"; + } + if (value < 100) { + return (units[0] + " " + units[0] + " " + tens[value % 10] + " " + units[value % 10]); + } else if (value < 1000 && value > 100) { + + if((value % 100) < 20){ + return units[0] + " " + units[value / 100] + " " + "hundred and " + units[(value % 100)]; + } + + return units[0] + " " + units[value / 100] + " " + "hundred and " + tens[(value % 100) / 10] + " " + units[value % 100 / 10]; + + } else if (value > 1000 && value < 2359) { + return units[value / 100] + " " + "hundred" + " " + tens[(value % 100) / 10] + " " + units[(value % 1000) % 20]; + } + return null; + } + + + public String pmTime(Integer number){ + + Integer value = pmConverted (number); + + String[] units = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"}; + String[] tens = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty"}; + + if (value == 1200) { + return "Zero Zero Zero Zero"; + } +//1331 + if (value > 1300 && value < 1400) { + + if(value % 10 != 0){ + return ( units[value / 100] + " hundred " + tens[(value%1000) % 100 ] + " " + units[((value % 1000) % (100) % (10))]); + } + + } else if (value < 1000 && value > 100) { + + if((value % 1000) > 19){ + return units[0] + " " + units[value / 100] + " " + "hundred " + tens[(value % 100) / 10] + " " + units[value % 100 / 10]; + } + } else if (value > 1000 && value < 2359) { + return units[value / 100] + " " + "hundred" + " " + tens[(value % 100) / 10] + " " + units[(value % 1000) % 20]; + } + return null; + } + + + public int pmConverted(Integer number){ + + Integer value = ((number/100) + 12) * 100 + (number % 100); + + return value; + } + + +} + diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index d7fd1c5..af40329 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -5,89 +5,70 @@ public class Problem6 { +// AM FEATURES WORKING + // PM FEATURES SOON - public static void main(String[] args) { - String number = ""; - - Problem6 problem6 = new Problem6(); - - Scanner scanner = new Scanner(System.in); - - System.out.println("enter a regular time"); + static MilitarConvention convention = new MilitarConvention (); + // WORKING STILL ON PM FEATURES - String userInput = scanner.next(); + public static void main(String[] args) { - if(getPmOrAm(userInput).equalsIgnoreCase("am")){ - problem6.numeroToWordAfterAm(problem6.convertAnStringToInteger(userInput)); - } + int var = 1330 / 100; + System.out.println (var); - // System.out.println(problem6.numeroToWordAfterAm(130)); + Problem6 problem6 = new Problem6 (); - System.out.println(problem6.numeroToWordAfterAm(130)); + System.out.println ("Enter standard time..."); + String timeEntered = problem6.scanner (); - } + if(problem6.getPmOrAm (timeEntered).equalsIgnoreCase ("am")){ + String amTimeResult = convention.amTime (problem6.cleanNumber (timeEntered)); + System.out.println (amTimeResult + " Hours"); - public int convertAnStringToInteger(String value){ - try { - return Integer.parseInt(value); - }catch (NumberFormatException e){ - System.out.println(e); + }else if(problem6.getPmOrAm (timeEntered).equalsIgnoreCase ("pm")){ + String pmTimeResult = convention.pmTime (problem6.cleanNumber (timeEntered)); + System.out.println (pmTimeResult + " Hours"); } - return 0; - } - public static String getPmOrAm(String userInput) { + } - return userInput.substring(0, userInput.length() - 2); + public String getPmOrAm(String userInput) { + return userInput.substring (userInput.length () - 2, userInput.length ()); } - public static String removeSemicolon(String userInput) { - return userInput.replace(":", ""); + public String getNumberWithOutamOrPm(String userInput) { + return userInput.substring (0, userInput.length () - 2); } - public String numeroToWordAfterAm(Integer number) { + public String removeSemicolon(String userInput) { - final String[] units = {"Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"}; - final String[] tens = {"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"}; + String trim = userInput.trim (); - if (number < 20) return units[number]; - if (number < 100) return tens[number / 10] + ((number % 10 > 0) ? " " + numeroToWordAfterAm(number % 10) : ""); - if (number < 1000) return units[number / 100] + " Hundred" + ((number % 100 > 0) ? " and " + numeroToWordAfterAm(number % 100) : ""); - if (number < 1000000) return numeroToWordAfterAm(number / 1000) + " Thousand " + ((number % 1000 > 0) ? " " + numeroToWordAfterAm(number % 1000) : ""); - return numeroToWordAfterAm(number / 1000000) + " Million " + ((number % 1000000 > 0) ? " " + numeroToWordAfterAm(number % 1000000) : ""); + return trim.replace (":", ""); } + public int numberToInt(String str) { - public String militarConvertor(String timeDesitre) { - - String time = ""; - switch (timeDesitre) { - - case "1:30 pm": - return time += "Thirteen Hundred and Thirty Hours"; + return Integer.parseInt (str); + } - case "1:30 am": - return time += "Zero One Hundred and Thirty Hours"; + public int cleanNumber(String str) { - case "2:22pm pm": - return time += "Fourteen Hundred and Twenty Two Hours"; + return numberToInt (removeSemicolon (getNumberWithOutamOrPm (str))); - case "2:11am pm": - return time += "Zero Two Hundred and Eleven Hours"; + } - case "10:02am pm": - return time += "Ten Hundred Zero Two Hours"; + public String scanner() { - } - return time; + Scanner scanner = new Scanner (System.in); + return scanner.next (); } - } diff --git a/src/test/java/io/zipcoder/MilitarConventionTest.java b/src/test/java/io/zipcoder/MilitarConventionTest.java new file mode 100644 index 0000000..280ce20 --- /dev/null +++ b/src/test/java/io/zipcoder/MilitarConventionTest.java @@ -0,0 +1,19 @@ +package io.zipcoder; + +import org.junit.Assert; +import org.junit.Test; + + + +public class MilitarConventionTest { + + MilitarConvention mc = new MilitarConvention (); + + @Test + public void pmConvertedTest(){ + + int expected = 1330; + int actual = mc.pmConverted (130); + Assert.assertEquals (expected, actual); + } +} diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index ed87fa9..aa50ef7 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -7,18 +7,46 @@ public class Problem6Test { Problem6 problem6 = new Problem6(); @Test - public void militarConvertedTest(){ + public void getPmOrAmTest(){ - String expected = "Thirteen Hundred and Thirty Hours"; - String actual = problem6.militarConvertor("1:30 pm"); - Assert.assertEquals(expected, actual); + String expected = "am"; + String actual = problem6.getPmOrAm ("1:30am"); + Assert.assertEquals (expected, actual); + } + + @Test + public void getNumberWithOutamOrPm(){ + + String expected = "1:30"; + String actual = problem6.getNumberWithOutamOrPm ("1:30am"); + Assert.assertEquals (expected, actual); + } + + @Test + public void removeSemicolonTest(){ + + String expected = "130"; + String actual = problem6.removeSemicolon (problem6.getNumberWithOutamOrPm ("1:30am")); + Assert.assertEquals (expected, actual); + } + + @Test + public void numberToIntTest(){ + int expected = 130; + int actual = problem6.numberToInt ("130"); + Assert.assertEquals (expected, actual); } + @Test - public void numToWordTest(){ + public void cleanNumberTest(){ - String expected = "Two Hundred and Twenty Two"; - String actual = problem6.numeroToWordAfterAm(222); - Assert.assertEquals(expected, actual); + int expected = 130; + int actual = problem6.cleanNumber ("1:30pm"); + Assert.assertEquals (expected, actual); } + + + + }