From d13c6736f2560bb61cad18684e3e129d75911c43 Mon Sep 17 00:00:00 2001 From: HeikkiMustonen Date: Thu, 11 Oct 2018 15:38:14 +0300 Subject: [PATCH 1/5] after class push --- src/RomanNumerals.java | 34 +++++++++++++++++++++-- tests/TestRomanNumerals.java | 53 ++++++++++++++++++++++++++++++++++-- 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/src/RomanNumerals.java b/src/RomanNumerals.java index 20904f0..db439b4 100644 --- a/src/RomanNumerals.java +++ b/src/RomanNumerals.java @@ -1,8 +1,38 @@ +import java.util.HashMap; +import java.util.Map; public class RomanNumerals { + public int convertToInteger(String romanNum) { - // To be Implemented - return 0; + int sum = 0; + char[] numArray = StringToArray(romanNum); + + Map map; + map = new HashMap(){ + { + put("I", 1); + put("V", 5); + put("X", 10); + put("L", 50); + put("C", 100); + put("D", 500); + put("M", 1000); + + } + }; + + for(int i=0;i Date: Thu, 11 Oct 2018 15:39:48 +0300 Subject: [PATCH 2/5] atr clss --- tests/TestRomanNumerals.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/TestRomanNumerals.java b/tests/TestRomanNumerals.java index b54f000..77f194c 100644 --- a/tests/TestRomanNumerals.java +++ b/tests/TestRomanNumerals.java @@ -49,6 +49,11 @@ public void testRomanNumeralsAdding() { er = rn.convertToInteger("XX"); assertEquals(20,er); + + + er = rn.convertToInteger("CX"); + assertEquals(110,er); + } @Test From 24cb7e08b0e842c8654a48eb9ffa95f4448319e9 Mon Sep 17 00:00:00 2001 From: HeikkiMustonen Date: Mon, 15 Oct 2018 19:54:37 +0300 Subject: [PATCH 3/5] refactoring... --- src/RomanNumerals.java | 44 ++++++++++++++++++------------------ tests/TestRomanNumerals.java | 14 ++++++++---- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/RomanNumerals.java b/src/RomanNumerals.java index db439b4..7d6979f 100644 --- a/src/RomanNumerals.java +++ b/src/RomanNumerals.java @@ -3,31 +3,22 @@ public class RomanNumerals { + static final Map map = new HashMap(){ + { + put("I", 1); + put("V", 5); + put("X", 10); + put("L", 50); + put("C", 100); + put("D", 500); + put("M", 1000); + } + }; + public int convertToInteger(String romanNum) { - int sum = 0; char[] numArray = StringToArray(romanNum); - - Map map; - map = new HashMap(){ - { - put("I", 1); - put("V", 5); - put("X", 10); - put("L", 50); - put("C", 100); - put("D", 500); - put("M", 1000); - - } - }; - - for(int i=0;i Date: Mon, 15 Oct 2018 20:15:51 +0300 Subject: [PATCH 4/5] subtract working --- src/RomanNumerals.java | 15 ++++++++++++--- tests/TestRomanNumerals.java | 27 ++++++++++++++++++++++++++- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/RomanNumerals.java b/src/RomanNumerals.java index 7d6979f..190b74f 100644 --- a/src/RomanNumerals.java +++ b/src/RomanNumerals.java @@ -28,10 +28,19 @@ public char[] StringToArray(String str) { } public int CalculateRomanArray(char[] array) { + int lastNumber = 0; int sum = 0; - for(int i=0;i0;i--) { + String key = Character.toString(array[i-1]); + int currentNum = map.get(key); + if(lastNumber<= currentNum) { + sum += currentNum; + } + else { + sum -= currentNum; + } + + lastNumber = currentNum; } return sum; } diff --git a/tests/TestRomanNumerals.java b/tests/TestRomanNumerals.java index dde400b..1e7b524 100644 --- a/tests/TestRomanNumerals.java +++ b/tests/TestRomanNumerals.java @@ -60,11 +60,36 @@ public void testStringToArray() { } @Test - public void testCalculateRomanArray() { + public void testCalculateRomanArraySum() { RomanNumerals rn = new RomanNumerals(); char[] er = rn.StringToArray("VII"); int sum = rn.CalculateRomanArray(er); assertEquals(7,sum); } + + @Test + public void testCalculateRomanArraySum2() { + RomanNumerals rn = new RomanNumerals(); + char[] er = rn.StringToArray("CCCLXVII"); + int sum = rn.CalculateRomanArray(er); + assertEquals(367,sum); + } + + @Test + public void testCalculateRomanArraySubtract() { + RomanNumerals rn = new RomanNumerals(); + char[] er = rn.StringToArray("IV"); + int sum = rn.CalculateRomanArray(er); + assertEquals(4,sum); + } + + @Test + public void testCalculateRomanArraySubtract2() { + RomanNumerals rn = new RomanNumerals(); + char[] er = rn.StringToArray("ILX"); + int sum = rn.CalculateRomanArray(er); + assertEquals(59,sum); + } + } From bc349ef9f017c4013448679d2b687f9d1e864ad1 Mon Sep 17 00:00:00 2001 From: HeikkiMustonen Date: Mon, 15 Oct 2018 20:38:28 +0300 Subject: [PATCH 5/5] String validating --- src/RomanNumerals.java | 11 +++++++++++ tests/TestRomanNumerals.java | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/RomanNumerals.java b/src/RomanNumerals.java index 190b74f..518090a 100644 --- a/src/RomanNumerals.java +++ b/src/RomanNumerals.java @@ -15,6 +15,8 @@ public class RomanNumerals { } }; + static final String[] notAllowed = new String[] {"IIII","XXXX","CCCC","MMMM","VV","LL","DD"}; + public int convertToInteger(String romanNum) { char[] numArray = StringToArray(romanNum); @@ -44,4 +46,13 @@ public int CalculateRomanArray(char[] array) { } return sum; } + + public boolean ValidateRomanString(String str) { + for(int i = 0 ; i < notAllowed.length ; i++ ) { + if(str.contains(notAllowed[i])) { + return false; + } + } + return true; + } } diff --git a/tests/TestRomanNumerals.java b/tests/TestRomanNumerals.java index 1e7b524..5030d35 100644 --- a/tests/TestRomanNumerals.java +++ b/tests/TestRomanNumerals.java @@ -90,6 +90,30 @@ public void testCalculateRomanArraySubtract2() { int sum = rn.CalculateRomanArray(er); assertEquals(59,sum); } + + @Test + public void testRomanStringValidity() { + RomanNumerals rn = new RomanNumerals(); + String str = "IIIVVVSSSAAAXXXXVVBBSSE"; + boolean verdict = rn.ValidateRomanString(str); + assertEquals(false,verdict); + } + + @Test + public void testRomanStringValidity2() { + RomanNumerals rn = new RomanNumerals(); + String str = "IIIVSSSAAAXVBBSSE"; + boolean verdict = rn.ValidateRomanString(str); + assertEquals(true,verdict); + } + + @Test + public void testRomanStringValidity3() { + RomanNumerals rn = new RomanNumerals(); + String str = "IIIVVVSSSAAAXVVBBSSE"; + boolean verdict = rn.ValidateRomanString(str); + assertEquals(false,verdict); + } }