From 8beb167019fee1aa624901ad8d30e7d094c341ba Mon Sep 17 00:00:00 2001 From: lina Date: Mon, 4 Dec 2017 11:30:34 -0500 Subject: [PATCH 1/3] not there yet --- src/main/java/io/zipcoder/Problem6.java | 40 +++++++++++++++++++++ src/test/java/io/zipcoder/Problem6Test.java | 18 ++++++++++ 2 files changed, 58 insertions(+) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 4ee4e64..210145b 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -1,4 +1,44 @@ package io.zipcoder; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + public class Problem6 { + //Step 1: convert given 12 hour numerical format into 24 hours format + //use SimpleDateFormat to format input to 24 hours + public String convertTo24Hours(String input){ + SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm"); + SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a"); + Date date= null; + try { + date = parseFormat.parse(input); + } catch (ParseException e) { + e.printStackTrace(); + } + return displayFormat.format(date); + } + //Step 2: convert the 24 hour format into military time phrase in string format + //after the first two digit, add "Hundred and" to the end + //add Hours at the end of each string + public String convert(String input){ + + 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", "Seventy", "Eighty", "Ninety"}; + String formattedInput = convertTo24Hours(input); + String[] splitFormattedInput = formattedInput.split(":"); + for(int i=0;i Date: Wed, 6 Dec 2017 12:52:28 -0500 Subject: [PATCH 2/3] finished --- src/main/java/io/zipcoder/Problem6.java | 67 +++++++++++++++------ src/test/java/io/zipcoder/Problem6Test.java | 23 ++++++- 2 files changed, 71 insertions(+), 19 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 210145b..8fc5a80 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -7,10 +7,15 @@ public class Problem6 { //Step 1: convert given 12 hour numerical format into 24 hours format //use SimpleDateFormat to format input to 24 hours - public String convertTo24Hours(String input){ + + 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"}; + public String convertTo24Hours(String input) { SimpleDateFormat displayFormat = new SimpleDateFormat("HH:mm"); SimpleDateFormat parseFormat = new SimpleDateFormat("hh:mm a"); - Date date= null; + Date date = null; try { date = parseFormat.parse(input); } catch (ParseException e) { @@ -18,27 +23,55 @@ public String convertTo24Hours(String input){ } return displayFormat.format(date); } + //Step 2: convert the 24 hour format into military time phrase in string format //after the first two digit, add "Hundred and" to the end //add Hours at the end of each string - public String convert(String input){ - - 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", "Seventy", "Eighty", "Ninety"}; + public String[] splitHourMinute(String input){ String formattedInput = convertTo24Hours(input); - String[] splitFormattedInput = formattedInput.split(":"); - for(int i=0;i=10){ + word+=units[numHour]; + } + if(numHour>=20){ + if(numHour%10==0){ + word+=tens[numHour/10]; } - else{ - splitFormattedInput[i]=tens[i]; + else { + word += tens[numHour / 10] + " " + units[numHour % 10]; } } - return splitFormattedInput[0]+" Hundred and "+splitFormattedInput[1]+" Hours"; + return word; + } + public String convertMinute(String input){ + String minute = splitHourMinute(input)[1]; + int numMinute= Integer.parseInt(minute); + String word=""; + if(numMinute<10){ + word+=units[0]+" "+units[numMinute]; + } + if(numMinute<20 && numMinute>=10){ + word+=units[numMinute]; + } + if(numMinute>=20){ + if(numMinute%10==0){ + word+=tens[numMinute/10]; + } + else { + word += tens[numMinute / 10] + " " + units[numMinute % 10]; + } + } + return word; + } + public String convert(String input) { + return convertHour(input) + " Hundred and " + convertMinute(input) + " Hours"; } } diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index 55f14e6..cdb6a52 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -14,9 +14,28 @@ public void testConvertTo24Hours(){ } //output should Fourteen Hundred and Thirty Hours @Test - public void testConvert(){ - String expected="Fourteen Hundred and Thirty Hours"; + public void testConvert() { + String expected = "Fourteen Hundred and Thirty Hours"; String actual = problem6.convert("2:30 pm"); + Assert.assertEquals(expected, actual); + } + @Test + public void testConvert2(){ + String expected="Fourteen Hundred and Zero Hours"; + String actual = problem6.convert("2:00 pm"); + Assert.assertEquals(expected,actual); + System.out.println(actual); + } + @Test + public void testConvertTo24Hours2(){ + String expected = "09:00"; + String actual = problem6.convertTo24Hours("9:00 am"); + Assert.assertEquals(expected,actual); + } + @Test + public void testConvert3(){ + String expected ="Zero Two Hundred and Eleven Hours"; + String actual = problem6.convert("2:11 am"); Assert.assertEquals(expected,actual); } } From f0675c0b40374dc91a6424b6d86fcfd51a4ae966 Mon Sep 17 00:00:00 2001 From: lina Date: Wed, 6 Dec 2017 13:06:33 -0500 Subject: [PATCH 3/3] updated --- src/main/java/io/zipcoder/Problem6.java | 53 +++++++-------------- src/test/java/io/zipcoder/Problem6Test.java | 6 +-- 2 files changed, 20 insertions(+), 39 deletions(-) diff --git a/src/main/java/io/zipcoder/Problem6.java b/src/main/java/io/zipcoder/Problem6.java index 8fc5a80..1bbbaa1 100644 --- a/src/main/java/io/zipcoder/Problem6.java +++ b/src/main/java/io/zipcoder/Problem6.java @@ -27,51 +27,32 @@ public String convertTo24Hours(String input) { //Step 2: convert the 24 hour format into military time phrase in string format //after the first two digit, add "Hundred and" to the end //add Hours at the end of each string - public String[] splitHourMinute(String input){ + public String convertToMilitaryTime(String input){ String formattedInput = convertTo24Hours(input); - return formattedInput.split(":"); - } - public String convertHour(String input){ - String hour = splitHourMinute(input)[0]; - int numHour = Integer.parseInt(hour); - String word=""; - if(numHour<10){ - word+=units[0]+" "+units[numHour]; - } - if(numHour<20 && numHour>=10){ - word+=units[numHour]; - } - if(numHour>=20){ - if(numHour%10==0){ - word+=tens[numHour/10]; - } - else { - word += tens[numHour / 10] + " " + units[numHour % 10]; - } - } - return word; + String[] time= formattedInput.split(":"); + String hour = convertToWords(time[0]); + String minute=convertToWords(time[1]); + return hour + " Hundred and " + minute + " Hours"; + + } - public String convertMinute(String input){ - String minute = splitHourMinute(input)[1]; - int numMinute= Integer.parseInt(minute); + public String convertToWords(String input){ + int num = Integer.parseInt(input); String word=""; - if(numMinute<10){ - word+=units[0]+" "+units[numMinute]; + if(num<10){ + word+=units[0]+" "+units[num]; } - if(numMinute<20 && numMinute>=10){ - word+=units[numMinute]; + if(num<20 && num>=10){ + word+=units[num]; } - if(numMinute>=20){ - if(numMinute%10==0){ - word+=tens[numMinute/10]; + if(num>=20){ + if(num%10==0){ + word+=tens[num/10]; } else { - word += tens[numMinute / 10] + " " + units[numMinute % 10]; + word += tens[num / 10] + " " + units[num % 10]; } } return word; } - public String convert(String input) { - return convertHour(input) + " Hundred and " + convertMinute(input) + " Hours"; - } } diff --git a/src/test/java/io/zipcoder/Problem6Test.java b/src/test/java/io/zipcoder/Problem6Test.java index cdb6a52..0bdd0ff 100644 --- a/src/test/java/io/zipcoder/Problem6Test.java +++ b/src/test/java/io/zipcoder/Problem6Test.java @@ -16,13 +16,13 @@ public void testConvertTo24Hours(){ @Test public void testConvert() { String expected = "Fourteen Hundred and Thirty Hours"; - String actual = problem6.convert("2:30 pm"); + String actual = problem6.convertToMilitaryTime("2:30 pm"); Assert.assertEquals(expected, actual); } @Test public void testConvert2(){ String expected="Fourteen Hundred and Zero Hours"; - String actual = problem6.convert("2:00 pm"); + String actual = problem6.convertToMilitaryTime("2:00 pm"); Assert.assertEquals(expected,actual); System.out.println(actual); } @@ -35,7 +35,7 @@ public void testConvertTo24Hours2(){ @Test public void testConvert3(){ String expected ="Zero Two Hundred and Eleven Hours"; - String actual = problem6.convert("2:11 am"); + String actual = problem6.convertToMilitaryTime("2:11 am"); Assert.assertEquals(expected,actual); } }