- Make a Tree map
of basic elements which ll store Roman literals corresponding to Basic elements like 1 ,4,5,9,10,40,50,90,100 and so on.. - Get floor value for input from map and print corresponding roman value.
- Subtract floor value from input value and do step 2 and step 3 until input value > 0
Source Code:
package com.learning;
import java.util.Scanner;
import java.util.TreeMap;
public class IntToRomanConversion {
private static Scanner s;
/**
* @param args
*/
public static void main(String[] args) {
System.out.println("Enter the No to Convert :");
s = new Scanner(System.in);
int num = s.nextInt();
converter(num);
}
// Method for converting Decimal to Roman
static void converter(int input){
TreeMap basicElement = new TreeMap();
basicElement.put(1,"I");
basicElement.put(4,"IV");
basicElement.put(5,"V");
basicElement.put(9, "IX");
basicElement.put(10,"X");
basicElement.put(40, "XL");
basicElement.put(50,"L");
basicElement.put(90, "XC");
basicElement.put(100,"C");
basicElement.put(400, "CD");
basicElement.put(500,"D");
basicElement.put(900, "CM");
basicElement.put(1000,"M");
while(input>0){
Integer lower=basicElement.floorKey(input);
System.out.print(basicElement.get(lower));
input=input-lower;
}
}
}
Sample Input:
Enter the No to Convert :
Enter the No to Convert :
123
Sample Output:
CXXIII