import java.io.*;
import java.util.StringTokenizer;
import java.lang.Integer;
class test1{
public static void main(String[] args) throws IOException{
String roman="";
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("\nEnter the roman numeral: ");
try {
roman = br.readLine();
}catch (IOException ioe) {
System.out.println("Error reading the roman numeral");
System.exit(1);
}
try {
System.out.println(deromanize(roman));
}
catch (NumberFormatException e) {
System.out.println("Invalid input.");
System.exit(1);
}
System.out.println("\n\nGG");
}
// deromanize(string)
// takes a roman numeral returns a number
public static int deromanize(String roman) {
if (roman.length() == 0)
throw new NumberFormatException("An empty string is not quite a Roman numeral.");
roman = roman.toUpperCase();
int i=0, arabic=0, num=0;
while (i < roman.length()) {
char letter = roman.charAt(i);
int number = numberizer(letter);
if (number < 0)
throw new NumberFormatException("Illegal character \"" + letter + "\" in roman numeral.");
i++;
if (i == roman.length()) {
arabic += number;
}
else {
int nextNumber = numberizer(roman.charAt(i));
if (nextNumber > number) {
arabic += (nextNumber - number);
i++;
}
else {
arabic += number;
}
}
}
if (arabic > 3999)
throw new NumberFormatException("Numeral must be less than or equal to 3999...sorry.");
num = arabic;
return num;
} // end of deromanize
public static int numberizer(char letter) {
// Find the integer value of letter considered as a Roman numeral. Return
// -1 if letter is not a legal Roman numeral. The letter must be upper case.
switch (letter) {
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
default: return -1;
}
}//end of numberizer
}