From b5ffc77c5b2efb8907a6857a05d32730c39f9710 Mon Sep 17 00:00:00 2001 From: Joe Hendricks Date: Sat, 14 Apr 2018 22:32:27 -0400 Subject: [PATCH 1/4] Complete Military Clock --- src/main/java/io/zipcoder/Problem6.java | 147 ++++++++++++++++++++ src/test/java/io/zipcoder/Problem6Test.java | 4 + 2 files changed, 151 insertions(+) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..ac08ff8 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,151 @@ package io.zipcoder; +import javafx.beans.binding.IntegerBinding; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + public class Problem6 { + + private HashMap hours = new HashMap(); + private HashMap minutes = new HashMap(); + private HashMap multiplesOfTen = new HashMap(); + private String[] input = {}; + + public Problem6(){ + populateHours(); + populateMinutes(); + populateMultiplesOfTen(); + } + + public String convertToMilitaryTime(String input) { + this.input = splitTime(input); + + if(inTheMorning(this.input)){ + return getHourInMilitaryAM(this.input[0]) + + " Hundred and " + getMinutesInMilitary(this.input[1]) + + " Hours"; + } else { + return getHourInMilitaryPM(this.input[0]) + + " Hundred and " + getMinutesInMilitary(this.input[1]) + + " Hours"; + } + } + + private void populateHours(){ + hours.put("0", "Zero Zero"); + hours.put("1", "Zero One"); + hours.put("2", "Zero Two"); + hours.put("3", "Zero Three"); + hours.put("4", "Zero Four"); + hours.put("5", "Zero Five"); + hours.put("6", "Zero Six"); + hours.put("7", "Zero Seven"); + hours.put("8", "Zero Eight"); + hours.put("9", "Zero Nine"); + hours.put("10", "Ten"); + hours.put("11", "Eleven"); + hours.put("12", "Twelve"); + hours.put("13", "Thirteen"); + hours.put("14", "Fourteen"); + hours.put("15", "Fifteen"); + hours.put("16", "Sixteen"); + hours.put("17", "Seventeen"); + hours.put("18", "Eighteen"); + hours.put("19", "Nineteen"); + hours.put("20", "Twenty"); + hours.put("21", "Twenty One"); + hours.put("22", "Twenty Two"); + hours.put("23", "Twenty Three"); + } + + private void populateMinutes(){ + minutes.put("1", "One"); + minutes.put("2", "Two"); + minutes.put("3", "Three"); + minutes.put("4", "Four"); + minutes.put("5", "Five"); + minutes.put("6", "Six"); + minutes.put("7", "Seven"); + minutes.put("8", "Eight"); + minutes.put("9", "Nine"); + } + + private void populateMultiplesOfTen(){ + multiplesOfTen.put("10", "Ten"); + multiplesOfTen.put("20", "Twenty"); + multiplesOfTen.put("30", "Thirty"); + multiplesOfTen.put("40", "Forty"); + multiplesOfTen.put("50", "Fifty"); + } + + // Splits input into array // example: {10, 45, am} + private String[] splitTime(String time){ + String[] splitTimes = time.split(":"); + String[] endSplitTime = { + splitTimes[0], + splitTimes[1].substring(0, 2), + time.substring(time.length() - 2) + }; + return endSplitTime; + } + + // Checks if the input contains (am) - morning time + private boolean inTheMorning(String[] testArray){ + return (testArray[2].equalsIgnoreCase("am")); + } + + // Checks what number the minutes starts with and feeds to getMinutesInMilitary + private String minuteNumberStartsWith(String[] timeArray){ + String firstMinuteNumber = ""; + for(int i = 0; i < 6; i++){ + if(timeArray[1].substring(0, 1).equals(String.valueOf(i))){ + firstMinuteNumber += String.valueOf(i + "0"); + break; + } + } + return firstMinuteNumber; + } + + public String getHourInMilitaryAM(String hour){ + if(Integer.parseInt(hour) == 12){ + return hours.get("0"); + } else { + return hours.get(hour); + } + } + + public String getHourInMilitaryPM(String hour){ + Integer pmHour = Integer.parseInt(hour) + 12; + if(Integer.parseInt(hour) == 12){ + return hours.get("12"); + } else { + return hours.get(String.valueOf(pmHour)); + } + } + + // Converts standard minutes to military minutes + public String getMinutesInMilitary(String inputMinutes){ + + if (Integer.parseInt(inputMinutes.substring(0, 2)) < 10) { + return hours.get(inputMinutes.substring(inputMinutes.length() - 1)); + } else if (Integer.parseInt(inputMinutes.substring(0, 2)) < 20){ + return hours.get(inputMinutes); + } else if (Integer.parseInt(inputMinutes.substring(0, 2)) % 10 == 0) { + return multiplesOfTen.get(minuteNumberStartsWith(this.input)); + } else { + return multiplesOfTen.get(minuteNumberStartsWith(this.input)) + + " " + minutes.get(inputMinutes.substring(inputMinutes.length() - 1)); + } + } + + public static void main(String[] args) { + Problem6 problem6 = new Problem6(); + String testTime = "11:32am"; + System.out.println(problem6.convertToMilitaryTime(testTime)); + //String[] time = {"1", "45", "am"}; + //System.out.println(problem6.convertTime(time)); + + } } diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..d1df00a 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,4 +1,8 @@ package io.zipcoder; + public class Problem6Test { + + + } From daf091fde73ad997729fc613611441527b771e01 Mon Sep 17 00:00:00 2001 From: Joe Hendricks Date: Sat, 14 Apr 2018 22:47:32 -0400 Subject: [PATCH 2/4] Fully Tested Mother Approved --- src/main/java/io/zipcoder/Problem6.java | 12 ++--- src/test/java/io/zipcoder/Problem6Test.java | 51 +++++++++++++++++++++ 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index ac08ff8..edbe3f5 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -81,7 +81,7 @@ private void populateMultiplesOfTen(){ } // Splits input into array // example: {10, 45, am} - private String[] splitTime(String time){ + protected String[] splitTime(String time){ String[] splitTimes = time.split(":"); String[] endSplitTime = { splitTimes[0], @@ -92,7 +92,7 @@ private String[] splitTime(String time){ } // Checks if the input contains (am) - morning time - private boolean inTheMorning(String[] testArray){ + protected boolean inTheMorning(String[] testArray){ return (testArray[2].equalsIgnoreCase("am")); } @@ -108,7 +108,7 @@ private String minuteNumberStartsWith(String[] timeArray){ return firstMinuteNumber; } - public String getHourInMilitaryAM(String hour){ + protected String getHourInMilitaryAM(String hour){ if(Integer.parseInt(hour) == 12){ return hours.get("0"); } else { @@ -116,7 +116,7 @@ public String getHourInMilitaryAM(String hour){ } } - public String getHourInMilitaryPM(String hour){ + protected String getHourInMilitaryPM(String hour){ Integer pmHour = Integer.parseInt(hour) + 12; if(Integer.parseInt(hour) == 12){ return hours.get("12"); @@ -126,7 +126,7 @@ public String getHourInMilitaryPM(String hour){ } // Converts standard minutes to military minutes - public String getMinutesInMilitary(String inputMinutes){ + protected String getMinutesInMilitary(String inputMinutes){ if (Integer.parseInt(inputMinutes.substring(0, 2)) < 10) { return hours.get(inputMinutes.substring(inputMinutes.length() - 1)); @@ -142,7 +142,7 @@ public String getMinutesInMilitary(String inputMinutes){ public static void main(String[] args) { Problem6 problem6 = new Problem6(); - String testTime = "11:32am"; + String testTime = "12:01am"; System.out.println(problem6.convertToMilitaryTime(testTime)); //String[] time = {"1", "45", "am"}; //System.out.println(problem6.convertTime(time)); diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d1df00a..3938949 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,8 +1,59 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Test; + public class Problem6Test { + @Test + public void convertToMilitaryTimeAMTest(){ + Problem6 problem6 = new Problem6(); + + String expected = "Eleven Hundred and Thirty Three Hours"; + String actual = problem6.convertToMilitaryTime("11:33am"); + + Assert.assertEquals(expected, actual); + } + + @Test + public void convertToMilitaryTimePMTest(){ + Problem6 problem6 = new Problem6(); + + String expected = "Twenty Three Hundred and Thirty Three Hours"; + String actual = problem6.convertToMilitaryTime("11:33pm"); + + Assert.assertEquals(expected, actual); + } + + @Test + public void splitTimeTest(){ + Problem6 problem6 = new Problem6(); + + String[] expected = {"10", "35", "pm"}; + String[] actual = problem6.splitTime("10:35pm"); + + Assert.assertEquals(expected, actual); + } + + @Test + public void isItMorningTest(){ + Problem6 problem6 = new Problem6(); + String[] timeArray = {"10", "35", "am"}; + + boolean actual = problem6.inTheMorning(timeArray); + + Assert.assertTrue(actual); + } + + @Test + public void isItAfternoonTest(){ + Problem6 problem6 = new Problem6(); + String[] timeArray = {"10", "35", "pm"}; + + boolean actual = problem6.inTheMorning(timeArray); + Assert.assertFalse(actual); + } } From 58587ab98bba3563a03631e870b936452b3f8c17 Mon Sep 17 00:00:00 2001 From: Joe Hendricks Date: Sat, 14 Apr 2018 22:50:56 -0400 Subject: [PATCH 3/4] fix --- src/main/java/io/zipcoder/Problem6.java | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index edbe3f5..69f1c42 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -24,11 +24,13 @@ public String convertToMilitaryTime(String input) { if(inTheMorning(this.input)){ return getHourInMilitaryAM(this.input[0]) + - " Hundred and " + getMinutesInMilitary(this.input[1]) + + " Hundred and " + + getMinutesInMilitary(this.input[1]) + " Hours"; } else { return getHourInMilitaryPM(this.input[0]) + - " Hundred and " + getMinutesInMilitary(this.input[1]) + + " Hundred and " + + getMinutesInMilitary(this.input[1]) + " Hours"; } } @@ -135,17 +137,8 @@ protected String getMinutesInMilitary(String inputMinutes){ } else if (Integer.parseInt(inputMinutes.substring(0, 2)) % 10 == 0) { return multiplesOfTen.get(minuteNumberStartsWith(this.input)); } else { - return multiplesOfTen.get(minuteNumberStartsWith(this.input)) - + " " + minutes.get(inputMinutes.substring(inputMinutes.length() - 1)); + return multiplesOfTen.get(minuteNumberStartsWith(this.input)) + " " + + minutes.get(inputMinutes.substring(inputMinutes.length() - 1)); } } - - public static void main(String[] args) { - Problem6 problem6 = new Problem6(); - String testTime = "12:01am"; - System.out.println(problem6.convertToMilitaryTime(testTime)); - //String[] time = {"1", "45", "am"}; - //System.out.println(problem6.convertTime(time)); - - } } From 701114d964f4d8b958e3be1c562bb82894ea96b8 Mon Sep 17 00:00:00 2001 From: Joe Hendricks Date: Sun, 15 Apr 2018 00:15:14 -0400 Subject: [PATCH 4/4] Finished --- src/main/java/io/zipcoder/Problem6.java | 100 ++++++++++++------------ 1 file changed, 48 insertions(+), 52 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 69f1c42..60cf5c0 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,10 +1,5 @@ package io.zipcoder; - -import javafx.beans.binding.IntegerBinding; - -import java.util.Arrays; import java.util.HashMap; -import java.util.Map; public class Problem6 { @@ -19,6 +14,7 @@ public Problem6(){ populateMultiplesOfTen(); } + // Converts String input to Military Time result public String convertToMilitaryTime(String input) { this.input = splitTime(input); @@ -35,53 +31,6 @@ public String convertToMilitaryTime(String input) { } } - private void populateHours(){ - hours.put("0", "Zero Zero"); - hours.put("1", "Zero One"); - hours.put("2", "Zero Two"); - hours.put("3", "Zero Three"); - hours.put("4", "Zero Four"); - hours.put("5", "Zero Five"); - hours.put("6", "Zero Six"); - hours.put("7", "Zero Seven"); - hours.put("8", "Zero Eight"); - hours.put("9", "Zero Nine"); - hours.put("10", "Ten"); - hours.put("11", "Eleven"); - hours.put("12", "Twelve"); - hours.put("13", "Thirteen"); - hours.put("14", "Fourteen"); - hours.put("15", "Fifteen"); - hours.put("16", "Sixteen"); - hours.put("17", "Seventeen"); - hours.put("18", "Eighteen"); - hours.put("19", "Nineteen"); - hours.put("20", "Twenty"); - hours.put("21", "Twenty One"); - hours.put("22", "Twenty Two"); - hours.put("23", "Twenty Three"); - } - - private void populateMinutes(){ - minutes.put("1", "One"); - minutes.put("2", "Two"); - minutes.put("3", "Three"); - minutes.put("4", "Four"); - minutes.put("5", "Five"); - minutes.put("6", "Six"); - minutes.put("7", "Seven"); - minutes.put("8", "Eight"); - minutes.put("9", "Nine"); - } - - private void populateMultiplesOfTen(){ - multiplesOfTen.put("10", "Ten"); - multiplesOfTen.put("20", "Twenty"); - multiplesOfTen.put("30", "Thirty"); - multiplesOfTen.put("40", "Forty"); - multiplesOfTen.put("50", "Fifty"); - } - // Splits input into array // example: {10, 45, am} protected String[] splitTime(String time){ String[] splitTimes = time.split(":"); @@ -141,4 +90,51 @@ protected String getMinutesInMilitary(String inputMinutes){ minutes.get(inputMinutes.substring(inputMinutes.length() - 1)); } } + + private void populateHours(){ + hours.put("0", "Zero Zero"); + hours.put("1", "Zero One"); + hours.put("2", "Zero Two"); + hours.put("3", "Zero Three"); + hours.put("4", "Zero Four"); + hours.put("5", "Zero Five"); + hours.put("6", "Zero Six"); + hours.put("7", "Zero Seven"); + hours.put("8", "Zero Eight"); + hours.put("9", "Zero Nine"); + hours.put("10", "Ten"); + hours.put("11", "Eleven"); + hours.put("12", "Twelve"); + hours.put("13", "Thirteen"); + hours.put("14", "Fourteen"); + hours.put("15", "Fifteen"); + hours.put("16", "Sixteen"); + hours.put("17", "Seventeen"); + hours.put("18", "Eighteen"); + hours.put("19", "Nineteen"); + hours.put("20", "Twenty"); + hours.put("21", "Twenty One"); + hours.put("22", "Twenty Two"); + hours.put("23", "Twenty Three"); + } + + private void populateMinutes(){ + minutes.put("1", "One"); + minutes.put("2", "Two"); + minutes.put("3", "Three"); + minutes.put("4", "Four"); + minutes.put("5", "Five"); + minutes.put("6", "Six"); + minutes.put("7", "Seven"); + minutes.put("8", "Eight"); + minutes.put("9", "Nine"); + } + + private void populateMultiplesOfTen(){ + multiplesOfTen.put("10", "Ten"); + multiplesOfTen.put("20", "Twenty"); + multiplesOfTen.put("30", "Thirty"); + multiplesOfTen.put("40", "Forty"); + multiplesOfTen.put("50", "Fifty"); + } }