.
package com.codegym.task.task37.task3714;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.stream.Stream;
/*
Ancient Rome
*/
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 numeral to be converted to decimal: ");
String romanString = bufferedReader.readLine();
System.out.println("Conversion result: " + romanToInteger(romanString));
}
public static int romanToInteger(String s) {
char [] roms = s.toCharArray();
int sum = 0;
HashMap<String, Integer> romanNumb = new HashMap<>();
romanNumb.put("I", 1);
romanNumb.put("IV", 4);
romanNumb.put("V", 5);
romanNumb.put("IX", 9);
romanNumb.put("X", 10);
romanNumb.put("XL", 40);
romanNumb.put("L", 50);
romanNumb.put("XC", 90);
romanNumb.put("C", 100);
romanNumb.put("CD", 400);
romanNumb.put("D", 500);
romanNumb.put("CM", 400);
romanNumb.put("M", 1000);
for(int i = 0; i < roms.length - 1; i++) {
if(romanNumb.containsKey(String.valueOf(roms[i])) && !isLess(romanNumb, roms[i], roms[i + 1])){
sum += romanNumb.get(String.valueOf(roms[i]));
if(i == roms.length - 2) {
sum += romanNumb.get(String.valueOf(roms[i + 1]));
}
} else {
String asd = roms[i] + Character.toString(roms[i + 1]);
if(romanNumb.containsKey(asd)){
sum += romanNumb.get(asd);
} else {
sum += romanNumb.get(String.valueOf(roms[i]));
sum += romanNumb.get(String.valueOf(roms[i + 1]));
}
}
}
return sum;
}
public static boolean isLess(HashMap<String, Integer> map, char first, char second) {
return map.get(String.valueOf(first)) < map.get(String.valueOf(second));
}
}