Write a program that prompts for a number and displays it in Roman numerals.
package chap456;
import java.util.Scanner;
import java.util.TreeMap;
public class ToRoman {
public static TreeMap<Integer, String> map = new TreeMap<Integer, String>();
static {
// put the value and key pairs in such a way that
// every interger should be covered in roman number
map.put(1000, "M");
map.put(900, "CM");
map.put(500, "D");
map.put(400, "CD");
map.put(100, "C");
map.put(90, "XC");
map.put(50, "L");
map.put(40, "XL");
map.put(10, "X");
map.put(9, "IX");
map.put(5, "V");
map.put(4, "IV");
map.put(1, "I");
}
public static String toRoman(int num) {
// floorkey in treemap returns the greatest key less than or equal to the given key
int value = map.floorKey(num);
if (num == value) {
return map.get(num);
}
return map.get(value) + toRoman(num - value);
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("enter a number: ");
int number= input.nextInt();
String romanNumber = ToRoman.toRoman(number);
System.out.println("the respective roman number is: " +romanNumber);
input.close();
}
}
Output:
enter a number:
96
the respective roman number is:XCVI