From 813168c4b19959cb075b864881bb6f89a80e2038 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 4 Dec 2017 13:32:07 -0500 Subject: [PATCH] Stuck at a spot with too many if statements, need to change --- src/main/java/io/zipcoder/Problem6.java | 106 ++++++++++++++++++++ src/test/java/io/zipcoder/Problem6Test.java | 59 +++++++++++ 2 files changed, 165 insertions(+) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..e1f8d26 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,110 @@ package io.zipcoder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.StringJoiner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; public class Problem6 { + + private StringJoiner militaryString = new StringJoiner(" ", "", ""); + private ArrayList valuesAsStrings = new ArrayList<>(); + + public String convertToMilitaryString(String timeInput){ + Integer[] timeValues = stringSplit(timeInput); + + if(timeValues[0] < 10){ + militaryString.add(valuesAsStrings.get(0)); + + }else if(timeValues[0] > 10 && timeValues[0] < 13){ + militaryString.add(valuesAsStrings.get(timeValues[0])); + + }else if(timeValues[0] > 10 && timeValues[0] <= 20) { + militaryString.add(valuesAsStrings.get(timeValues[0])); + + }else if(timeValues[0] > 20){ + militaryString.add(valuesAsStrings.get(20)); + } + + System.out.println(militaryString); + return militaryString.toString(); + } + +// public String convertAMorPM(String timeInput){ +// Pattern amPattern = Pattern.compile("(am)\\w", Pattern.CASE_INSENSITIVE); +// Matcher amMatcher = amPattern.matcher(timeInput); +// return null; +// } +// +// public String convertMinutes(String timeInput){ +// Pattern singleDigitMinutePattern = Pattern.compile("[:][0][\\d]"); +// Pattern twoDigitMinutePattern = Pattern.compile("[:][\\d][\\d]"); +// Matcher singleDigitMinuteMatcher = singleDigitMinutePattern.matcher(timeInput); +// Matcher twoDigitMinuteMatcher = twoDigitMinutePattern.matcher(timeInput); +// +// return null; +// } +// public String convertHours(String timeInput){ +// Pattern singleDigitHourPattern = Pattern.compile("[\\d][:]"); +// Pattern twoDigitHourPattern = Pattern.compile("[\\d][\\d][:]"); +// Matcher singleDigitHourMatcher = singleDigitHourPattern.matcher(timeInput); +// Matcher twoDigitHourMatcher = twoDigitHourPattern.matcher(timeInput); +// if(singleDigitHourMatcher.find()){ +// } +// return null; +// } + + public Integer[] stringSplit(String input){ + String[] timeString = input.split(":"); + String amOrPm = timeString[1].substring(2); + Integer hours = Integer.parseInt(timeString[0]); + Integer minutes = Integer.parseInt(timeString[1].substring(0,2)); + Integer[] timeAsValues = new Integer[2]; + + if(hours != 12) { + + if (amOrPm.contains("pm")) + hours += 12; + } + + timeAsValues[0] = hours; + timeAsValues[1] = minutes; + System.out.println(timeAsValues[0]); + System.out.println(timeAsValues[1]); + + return timeAsValues; + } + + public Problem6(){ + valuesAsStrings.add("Zero");//0 + valuesAsStrings.add("One");//1 + valuesAsStrings.add("Two");//2 + valuesAsStrings.add("Three");//3 + valuesAsStrings.add("Four");//4 + valuesAsStrings.add("Five");//5 + valuesAsStrings.add("Six");//6 + valuesAsStrings.add("Seven");//7 + valuesAsStrings.add("Eight");//8 + valuesAsStrings.add("Nine");//9 + valuesAsStrings.add("Ten");//10 + valuesAsStrings.add("Eleven");//11 + valuesAsStrings.add("Twelve");//12 + valuesAsStrings.add("Thirteen");//13 + valuesAsStrings.add("Fourteen");//14 + valuesAsStrings.add("Fifteen");//15 + valuesAsStrings.add("Sixteen");//16 + valuesAsStrings.add("Seventeen");//17 + valuesAsStrings.add("Eighteen");//18 + valuesAsStrings.add("Nineteen");//19 + valuesAsStrings.add("Twenty");//20 + valuesAsStrings.add("Thirty");//21 + valuesAsStrings.add("Forty");//22 + valuesAsStrings.add("Fifty");//23 + } + + public static void main(String[] args){ + Problem6 problem6 = new Problem6(); + // problem6.stringSplit("11:30pm"); + problem6.convertToMilitaryString("10:30pm"); + } } diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index d262e88..f2be1d8 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -1,4 +1,63 @@ package io.zipcoder; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + public class Problem6Test { + private Problem6 problem6; + private String militaryString1; + private String militaryString2; + private String militaryString3; + private String militaryString4; + private String militaryString5; + + @Before + public void setUp(){ + problem6 = new Problem6(); + militaryString1 = "1:30pm"; + militaryString2 = "1:30am"; + militaryString3 = "2:22pm"; + militaryString4 = "2:11am"; + militaryString5 = "10:02am"; + } + + @Test + public void convertToMilitaryStringTest1(){ + String expected = "Thirteen Hundred and Thirty Hours"; + String actual = problem6.convertToMilitaryString(militaryString1); + Assert.assertEquals(expected, actual); + } + + @Test + public void convertToMilitaryStringTest2(){ + String expected = "Zero One Hundred and Thirty Hours"; + String actual = problem6.convertToMilitaryString(militaryString2); + Assert.assertEquals(expected, actual); + } + + @Test + public void convertToMilitaryStringTest3(){ + String expected = "Fourteen Hundred and Twenty Two Hours"; + String actual = problem6.convertToMilitaryString(militaryString3); + Assert.assertEquals(expected, actual); + } + + @Test + public void convertToMilitaryStringTest4(){ + String expected = "Zero Two Hundred and Eleven Hours"; + String actual = problem6.convertToMilitaryString(militaryString4); + Assert.assertEquals(expected, actual); + } + + @Test + public void convertToMilitaryStringTest5(){ + String expected = "Ten Hundred Zero Two Hours"; + String actual = problem6.convertToMilitaryString(militaryString5); + Assert.assertEquals(expected, actual); + } + + @Test + public void stringSplitTest(){ + } }