package com.javarush.task.task37.task3714;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
/*
Древний Рим
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Input a roman number to be converted to decimal: ");
String romanString = bufferedReader.readLine();
System.out.println("Conversion result equals " + romanToInteger(romanString));
}
public static int romanToInteger(String s) {
int result = 0;
Map <Character, Integer> letters = new LinkedHashMap<>();
letters.put('I', 1); letters.put('V', 5); letters.put('X', 10); letters.put('L', 50); letters.put('C', 100); letters.put('D', 500); letters.put('M', 1000);
for (int i = 0; i < s.length(); ++i) {
int numCurrent = letters.get(s.charAt(i)), numNext = letters.get(s.charAt(i + 1));
if(i == (s.length() - 2) && (numCurrent >= numNext )) {
result += numCurrent + numNext;
break;
}
if(numCurrent < numNext) {
result += numNext - numCurrent;
++i;
}
else
result += numCurrent;
}
return result;
}
}
package com.javarush.task.task37.task3714;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
/*
Древний Рим
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Input a roman number to be converted to decimal: ");
String romanString = bufferedReader.readLine();
System.out.println("Conversion result equals " + romanToInteger(romanString));
}
public static int romanToInteger(String s) {
int result = 0;
Map <Character, Integer> letters = new LinkedHashMap<>();
letters.put('I', 1); letters.put('V', 5); letters.put('X', 10); letters.put('L', 50); letters.put('C', 100); letters.put('D', 500); letters.put('M', 1000);
for (int i = 0; i < s.length(); ++i) {
int numCurrent = letters.get(s.charAt(i)), numNext = letters.get(s.charAt(i + 1));
if(i == (s.length() - 2) && (numCurrent == numNext || numCurrent > numNext)) {
result += numCurrent + numNext;
break;
}
if(numCurrent < numNext) {
result += numNext - numCurrent;
++i;
}
else
result += numCurrent;
}
return result;
}
}