Categories: Java Java Programming & Coding
convert roman number to integer and Integer to roman number in java
package r4r.in;
import java.util.HashMap;
import java.util.Map;
public class RomanToInt {
public static void main(String[] args) {
for (int i = 1; i < 200000; i++) {
System.out.println("i=" + i + " -> " + intToRoman(i) + " Integer Nunber " + romanToInt(intToRoman(i)) + " ="
+ (romanToInt(intToRoman(i)) == i));
}
}
private static int romanToInt(String roman) {
//convert roman number to integer and Integer to roman number in java
int sum = 0;
Map<Character, Integer> romanMap = new HashMap<Character, Integer>();
romanMap.put('I', 1);
romanMap.put('V', 5);
romanMap.put('X', 10);
romanMap.put('L', 50);
romanMap.put('C', 100);
romanMap.put('D', 500);
romanMap.put('M', 1000);
int n = roman.length();
for (int i = 0; i < n; i++) {
if (i != n - 1 && romanMap.get(roman.charAt(i)) < romanMap.get(roman.charAt(i + 1))) {
sum += romanMap.get(roman.charAt(i + 1)) - romanMap.get(roman.charAt(i));
i++;
} else {
sum += romanMap.get(roman.charAt(i));
}
}
return sum;
}
public static String intToRoman(int num) {
StringBuilder sb = new StringBuilder();
int times = 0;
String[] romans = new String[] { "I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M" };
int[] ints = new int[] { 1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
for (int i = ints.length - 1; i >= 0; i--) {
times = num / ints[i];
if (times != 0) {
//System.err.println(times);
num %= ints[i];
while (times > 0) {
sb.append(romans[i]);
times--;
}
}
}
return sb.toString();
}
}