Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. package pn;
  2.  
  3. import static org.junit.Assert.assertEquals;
  4. import static org.junit.Assert.assertTrue;
  5.  
  6. import org.junit.Before;
  7. import org.junit.Test;
  8.  
  9.  
  10. public class AppTest {
  11.  
  12. private RomanToNumbersConverter romanToNumbersConverter;
  13.  
  14. @Before
  15. public void setUp() throws Exception {
  16. romanToNumbersConverter = new RomanToNumbersConverter();
  17. }
  18.  
  19. @Test
  20. public void convertOne() {
  21. int result = romanToNumbersConverter.convert("I");
  22. assertEquals(1, result);
  23. }
  24.  
  25. @Test
  26. public void testFive() {
  27. int result = romanToNumbersConverter.convert("V");
  28. assertEquals(5, result);
  29. }
  30.  
  31. @Test
  32. public void testFour() {
  33. int result = romanToNumbersConverter.convert("IV");
  34. assertEquals(4, result);
  35. }
  36.  
  37. @Test
  38. public void testSix() {
  39. int result = romanToNumbersConverter.convert("VI");
  40. assertEquals(6, result);
  41. }
  42.  
  43. @Test
  44. public void testEight() {
  45. int result = romanToNumbersConverter.convert("VIII");
  46. assertEquals(8, result);
  47. }
  48.  
  49. @Test
  50. public void testEleven() {
  51. int result = romanToNumbersConverter.convert("XI");
  52. assertEquals(11, result);
  53. }
  54.  
  55. @Test
  56. public void testSixtyEight() {
  57. int result = romanToNumbersConverter.convert("LXVIII");
  58. assertEquals(68, result);
  59. }
  60.  
  61. @Test
  62. public void testOneHundreadAndEleven() {
  63. int result = romanToNumbersConverter.convert("XI");
  64. assertEquals(11, result);
  65.  
  66. }
  67. }
  68.  
  69.  
  70. package pn;
  71.  
  72. import java.util.HashMap;
  73.  
  74. public class RomanToNumbersConverter {
  75.  
  76. private HashMap<String, Integer> romanNumbers;
  77.  
  78. public RomanToNumbersConverter() {
  79. this.romanNumbers = new HashMap<>();
  80. romanNumbers.put("I", 1);
  81. romanNumbers.put("V", 5);
  82. romanNumbers.put("X", 10);
  83. romanNumbers.put("L", 50);
  84. romanNumbers.put("C", 100);
  85. }
  86.  
  87. public int convert(String romanNumber) {
  88. if (romanNumber.length() == 1) {
  89. return romanNumbers.get(romanNumber);
  90. }
  91. int result = 0;
  92. char[] romanNumberArray = romanNumber.toCharArray();
  93.  
  94. for (int character = romanNumber.length() - 1; character > 0; character--) {
  95. String characterAsString = Character.toString(romanNumberArray[character]);
  96. String previousCharacterAsString = Character.toString(romanNumberArray[character-1]);
  97. int currentNumber = romanNumbers.get(characterAsString);
  98.  
  99. if (romanNumbers.get(previousCharacterAsString) < currentNumber) {
  100. currentNumber = currentNumber - romanNumbers.get(previousCharacterAsString);
  101. } else if (romanNumbers.get(previousCharacterAsString) > currentNumber) {
  102.  
  103. currentNumber = currentNumber + romanNumbers.get(previousCharacterAsString);
  104.  
  105. }
  106. result += currentNumber;
  107. }
  108. return result;
  109. }
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement