罗马数字/解码示例:
class Roman { private static int decodeSingle(char letter) { switch (letter) { case 'M': return 1000; case 'D': return 500; case 'C': return 100; case 'L': return 50; case 'X': return 10; case 'V': return 5; case 'I': return 1; default: return 0; } } public static int decode(String roman) { int result = 0; String uRoman = roman.toUpperCase(); //case-insensitive for (int i = 0; i < uRoman.length() - 1; i++) {//loop over all but the last character if (decodeSingle(uRoman.charAt(i)) < decodeSingle(uRoman.charAt(i + 1))) { result -= decodeSingle(uRoman.charAt(i)); } else { result += decodeSingle(uRoman.charAt(i)); } } result += decodeSingle(uRoman.charAt(uRoman.length() - 1)); return result; } public static void main(String[] args) { System.out.println(decode("MCMXC")); //1990 System.out.println(decode("MMVIII")); //2008 System.out.println(decode("MDCLXVI")); //1666 } }