From 64d1ba6a69b21a6079045a061d3f0bcb87935ada Mon Sep 17 00:00:00 2001 From: papyy Date: Wed, 10 Oct 2018 17:58:54 +0300 Subject: [PATCH 1/2] Work in progress --- src/RomanNumerals.java | 81 ++++++++++++- tests/TestRomanNumerals.java | 222 ++++++++++++++++++++++++++++++++++- 2 files changed, 300 insertions(+), 3 deletions(-) diff --git a/src/RomanNumerals.java b/src/RomanNumerals.java index 20904f0..458ee07 100644 --- a/src/RomanNumerals.java +++ b/src/RomanNumerals.java @@ -2,7 +2,86 @@ public class RomanNumerals { public int convertToInteger(String romanNum) { // To be Implemented - return 0; + + int num = 0; + for (int i = 0; i < romanNum.length(); i++) { + + + + if (romanNum.charAt(i) == 'V') { + num = num + 5; + } + + if (romanNum.charAt(i) == 'I' && i + 1 < romanNum.length()) { + if (romanNum.charAt(i + 1) == 'V') { + num = num + 4; + i = i + 1; + break; + } + + } + + if (romanNum.charAt(i) == 'I' && i + 1 < romanNum.length()) { + if (romanNum.charAt(i + 1) == 'X') { + num = num + 9; + i = i + 1; + break; + } + + } + + if (romanNum.charAt(i) == 'X' && i + 1 < romanNum.length()) { + if (romanNum.charAt(i + 1) == 'L') { + num = num + 40; + i = i + 1; + break; + } else if (romanNum.charAt(i + 1) == 'C') { + num = num + 90; + i = i + 1; + break; + } + + } + + if (romanNum.charAt(i) == 'C' && i + 1 < romanNum.length()) { + if (romanNum.charAt(i + 1) == 'D') { + num = num + 400; + i = i + 1; + break; + } else if (romanNum.charAt(i + 1) == 'M') { + num = num + 900; + i = i + 1; + break; + } + + } + + + if (romanNum.charAt(i) == 'I' ) { + num = num + 1; + } + + if (romanNum.charAt(i) == 'X') { + num = num + 10; + } + + if (romanNum.charAt(i) == 'L') { + num = num + 50; + } + + if (romanNum.charAt(i) == 'C') { + num = num + 100; + } + + if (romanNum.charAt(i) == 'D') { + num = num + 500; + } + + if (romanNum.charAt(i) == 'M') { + num = num + 1000; + } + } + return num; } } diff --git a/tests/TestRomanNumerals.java b/tests/TestRomanNumerals.java index 5d1de75..59fde41 100644 --- a/tests/TestRomanNumerals.java +++ b/tests/TestRomanNumerals.java @@ -5,8 +5,226 @@ public class TestRomanNumerals { @Test - public void test() { - fail("Not yet implemented"); + public void test_one() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "I"; + + assertEquals(1, romanNumerals.convertToInteger(numeral)); + + //fail("Not yet implemented"); + } + + @Test + public void test_two() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "II"; + + assertEquals(2, romanNumerals.convertToInteger(numeral)); + + } + + @Test + public void test_three() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "III"; + + assertEquals(3, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_four() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "IV"; + + assertEquals(4, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_five() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "V"; + + assertEquals(5, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_six() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "VI"; + + assertEquals(6, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_seven() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "VII"; + + assertEquals(7, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_nine() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "IX"; + + assertEquals(9, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_ten() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "X"; + + assertEquals(10, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_twenty() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "XX"; + + assertEquals(20, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_fourty() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "XL"; + + assertEquals(40, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_fifty() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "L"; + + assertEquals(50, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_sixty() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "LX"; + + assertEquals(60, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_ninty() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "XC"; + + assertEquals(90, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_hundred() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "C"; + + assertEquals(100, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_twohundred() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "CC"; + + assertEquals(200, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_fourhundred() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "CD"; + + assertEquals(400, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_fivehundred() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "D"; + + assertEquals(500, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_ninehundred() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "CM"; + + assertEquals(900, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_thousand() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "M"; + + assertEquals(1000, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_1984() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "MCMLXXXIV"; + + assertEquals(1984, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_2014() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "MMXIV"; + + assertEquals(2014, romanNumerals.convertToInteger(numeral)); } } From b5e7cd477138b470ed8d13966bdaa670cd2553ae Mon Sep 17 00:00:00 2001 From: Pauliinap <43180084+Pauliinap@users.noreply.github.com> Date: Mon, 15 Oct 2018 23:21:40 +0300 Subject: [PATCH 2/2] Assignment Finished --- src/RomanNumerals.java | 186 ++++++++++++++++++++++++----------- tests/TestRomanNumerals.java | 170 ++++++++++++++++++++++++++++---- 2 files changed, 278 insertions(+), 78 deletions(-) diff --git a/src/RomanNumerals.java b/src/RomanNumerals.java index 458ee07..3d220ba 100644 --- a/src/RomanNumerals.java +++ b/src/RomanNumerals.java @@ -1,87 +1,159 @@ - public class RomanNumerals { public int convertToInteger(String romanNum) { - // To be Implemented int num = 0; + int j = 0; + int x = 0; + int c = 0; + int m = 0; + + //Program returns 0 if input is wrong for (int i = 0; i < romanNum.length(); i++) { - - - if (romanNum.charAt(i) == 'V') { - num = num + 5; - } - - if (romanNum.charAt(i) == 'I' && i + 1 < romanNum.length()) { - if (romanNum.charAt(i + 1) == 'V') { - num = num + 4; - i = i + 1; - break; + if (romanNum.charAt(i) == 'I' ) { + num = num + 1; + j = j + 1; + if (j == 4) { + return 0; } - + x = 0; + c = 0; + m = 0; } - if (romanNum.charAt(i) == 'I' && i + 1 < romanNum.length()) { - if (romanNum.charAt(i + 1) == 'X') { - num = num + 9; - i = i + 1; - break; + if (romanNum.charAt(i) == 'V') { + if (i == 0) { + num = num + 5; + } else { + if (romanNum.charAt(i) == 'V') { + if (romanNum.charAt(i - 1) == 'I') { + num = num + 3; + } else if (romanNum.charAt(i - 1) == 'V') { + return 0; + } else { + num = num + 5; + } + } } - + j = 0; + x = 0; + c = 0; + m = 0; } - if (romanNum.charAt(i) == 'X' && i + 1 < romanNum.length()) { - if (romanNum.charAt(i + 1) == 'L') { - num = num + 40; - i = i + 1; - break; - } else if (romanNum.charAt(i + 1) == 'C') { - num = num + 90; - i = i + 1; - break; + if (romanNum.charAt(i) == 'X') { + if (i == 0) { + num = num + 10; + } else { + if (romanNum.charAt(i) == 'X') { + if (romanNum.charAt(i - 1) == 'I') { + num = num + 8; + } else if (romanNum.charAt(i - 1) == 'V') { + return 0; + } else { + num = num + 10; + } + } } - - } - - if (romanNum.charAt(i) == 'C' && i + 1 < romanNum.length()) { - if (romanNum.charAt(i + 1) == 'D') { - num = num + 400; - i = i + 1; - break; - } else if (romanNum.charAt(i + 1) == 'M') { - num = num + 900; - i = i + 1; - break; + x = x + 1; + if (x == 4) { + return 0; } - - } - - - if (romanNum.charAt(i) == 'I' ) { - num = num + 1; - } - - if (romanNum.charAt(i) == 'X') { - num = num + 10; + j = 0; + c = 0; + m = 0; } if (romanNum.charAt(i) == 'L') { - num = num + 50; + if (i == 0) { + num = num + 50; + } else { + if (romanNum.charAt(i) == 'L') { + if (romanNum.charAt(i - 1) == 'X') { + num = num + 30; + } else if ((romanNum.charAt(i - 1) == 'I')||(romanNum.charAt(i - 1) == 'V')||(romanNum.charAt(i - 1) == 'L')) { + return 0; + } else { + num = num + 50; + } + } + } + j = 0; + x = 0; + c = 0; + m = 0; } - + if (romanNum.charAt(i) == 'C') { - num = num + 100; + if (i == 0) { + num = num + 100; + } else { + if (romanNum.charAt(i) == 'C') { + if (romanNum.charAt(i - 1) == 'X') { + num = num + 80; + } else if ((romanNum.charAt(i - 1) == 'I')||(romanNum.charAt(i - 1) == 'V')||(romanNum.charAt(i - 1) == 'L')) { + return 0; + } else { + num = num + 100; + } + } + } + c = c + 1; + if (c == 4) { + return 0; + } + j = 0; + x = 0; + m = 0; } if (romanNum.charAt(i) == 'D') { - num = num + 500; + if (i == 0) { + num = num + 500; + } else { + if (romanNum.charAt(i) == 'D') { + if (romanNum.charAt(i - 1) == 'C') { + num = num + 300; + } else if ((romanNum.charAt(i - 1) == 'I')||(romanNum.charAt(i - 1) == 'V')||(romanNum.charAt(i - 1) == 'X')||(romanNum.charAt(i - 1) == 'L')||(romanNum.charAt(i - 1) == 'D')) { + return 0; + } else { + num = num + 500; + } + } + } + j = 0; + x = 0; + c = 0; + m = 0; } if (romanNum.charAt(i) == 'M') { - num = num + 1000; + if (i == 0) { + num = num + 1000; + } else { + if (romanNum.charAt(i) == 'M') { + if (romanNum.charAt(i - 1) == 'C') { + num = num + 800; + } else if ((romanNum.charAt(i - 1) == 'I')||(romanNum.charAt(i - 1) == 'V')||(romanNum.charAt(i - 1) == 'X')||(romanNum.charAt(i - 1) == 'L')||(romanNum.charAt(i - 1) == 'D')) { + return 0; + } else { + num = num + 1000; + } + } + } + m = m + 1; + if (m == 4) { + return 0; + } + j = 0; + x = 0; + c = 0; } + + } - return num; + + return num; } } diff --git a/tests/TestRomanNumerals.java b/tests/TestRomanNumerals.java index 59fde41..ff1687d 100644 --- a/tests/TestRomanNumerals.java +++ b/tests/TestRomanNumerals.java @@ -5,7 +5,7 @@ public class TestRomanNumerals { @Test - public void test_one() { + public void test_1() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -13,11 +13,10 @@ public void test_one() { assertEquals(1, romanNumerals.convertToInteger(numeral)); - //fail("Not yet implemented"); } @Test - public void test_two() { + public void test_2() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -28,7 +27,7 @@ public void test_two() { } @Test - public void test_three() { + public void test_3() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -38,7 +37,7 @@ public void test_three() { } @Test - public void test_four() { + public void test_4() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -48,7 +47,7 @@ public void test_four() { } @Test - public void test_five() { + public void test_5() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -58,7 +57,7 @@ public void test_five() { } @Test - public void test_six() { + public void test_6() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -68,7 +67,7 @@ public void test_six() { } @Test - public void test_seven() { + public void test_7() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -78,7 +77,7 @@ public void test_seven() { } @Test - public void test_nine() { + public void test_9() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -88,7 +87,7 @@ public void test_nine() { } @Test - public void test_ten() { + public void test_10() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -98,7 +97,7 @@ public void test_ten() { } @Test - public void test_twenty() { + public void test_20() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -108,7 +107,7 @@ public void test_twenty() { } @Test - public void test_fourty() { + public void test_40() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -118,7 +117,7 @@ public void test_fourty() { } @Test - public void test_fifty() { + public void test_50() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -128,7 +127,7 @@ public void test_fifty() { } @Test - public void test_sixty() { + public void test_60() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -138,7 +137,7 @@ public void test_sixty() { } @Test - public void test_ninty() { + public void test_90() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -148,7 +147,7 @@ public void test_ninty() { } @Test - public void test_hundred() { + public void test_100() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -158,7 +157,7 @@ public void test_hundred() { } @Test - public void test_twohundred() { + public void test_200() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -168,7 +167,7 @@ public void test_twohundred() { } @Test - public void test_fourhundred() { + public void test_400() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -178,7 +177,7 @@ public void test_fourhundred() { } @Test - public void test_fivehundred() { + public void test_500() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -188,7 +187,7 @@ public void test_fivehundred() { } @Test - public void test_ninehundred() { + public void test_900() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -198,7 +197,7 @@ public void test_ninehundred() { } @Test - public void test_thousand() { + public void test_1000() { RomanNumerals romanNumerals = new RomanNumerals(); @@ -227,4 +226,133 @@ public void test_2014() { assertEquals(2014, romanNumerals.convertToInteger(numeral)); } + @Test + public void test_iiii() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "IIII"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_xxxx() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "XXXX"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_cccc() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "CCCC"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_mmmm() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "MMMM"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_vv() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "VV"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_ll() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "LL"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_dd() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "DD"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_il() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "IL"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_ic() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "IC"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_id() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "ID"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_im() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "IM"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_xd() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "XD"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } + + @Test + public void test_xm() { + + RomanNumerals romanNumerals = new RomanNumerals(); + + String numeral = "XM"; + + assertEquals(0, romanNumerals.convertToInteger(numeral)); + } }