Java Convert Roman to Integer Number

In this source code example, we will write a Java program to convert Roman number to an integer number.
Check out Java 8 examples at Java 8 Examples
Checkout all Java programs at 100+ Java Programs 

Java Convert Roman to Integer Number

Here is a Java program to convert Roman number to an integer number:
package net.sourcecodeexamples.java.Conversions;

import java.util.*;

public class RomanToInteger {

    private static Map < Character, Integer > map = new HashMap < Character, Integer > () {
        private static final long serialVersionUID = 87605733047260530 L;

        {
            put('I', 1);
            put('V', 5);
            put('X', 10);
            put('L', 50);
            put('C', 100);
            put('D', 500);
            put('M', 1000);
        }
    };

    /**
     * This function convert Roman number into Integer
     *
     * @param A Roman number string
     * @return integer
     */
    public static int romanToInt(String A) {

        char prev = ' ';

        int sum = 0;

        int newPrev = 0;
        for (int i = A.length() - 1; i >= 0; i--) {
            char c = A.charAt(i);

            if (prev != ' ') {
                // checking current Number greater then previous or not
                newPrev = map.get(prev) > newPrev ? map.get(prev) : newPrev;
            }

            int currentNum = map.get(c);

            // if current number greater then prev max previous then add
            if (currentNum >= newPrev) {
                sum += currentNum;
            } else {
                // subtract upcoming number until upcoming number not greater then prev max
                sum -= currentNum;
            }
            prev = c;
        }

        return sum;
    }

    public static void main(String[] args) {
        try (Scanner input = new Scanner(System.in)) {
            System.out.print("Enter the Roman number : ");
            String number = input.next();
            int sum = romanToInt(number);
            System.out.print("Integer number : ");
            System.out.println(sum);
        }
    }
}

Output

Enter the Roman number : DCCVII
Integer number : 707
Check out Java 8 examples at Java 8 Examples
Checkout all Java programs at 100+ Java Programs 


Comments