Created
April 8, 2015 20:44
-
-
Save SH4DY/55844a077f02d5260107 to your computer and use it in GitHub Desktop.
Roman number conversion, following the rules: Symbols are placed from left to right in order of value, starting with the largest. However, in a few specific cases,[2] to avoid four characters being repeated in succession (such as IIII or XXXX) these can be reduced using subtractive notation as follows:[3][4]
the numeral I can be placed before V …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class RomanConversion { | |
public static void main(String[] args){ | |
System.out.println(toRoman(1904)); | |
} | |
public static String toRoman(int x){ | |
StringBuilder sb = new StringBuilder(); | |
String number = x + ""; | |
//Thousands | |
int i = number.length()-3; | |
if(i > 0){ | |
int thousands = Integer.parseInt(number.substring(0, i)); | |
for(; thousands > 0; thousands--){ | |
sb.append("M"); | |
} | |
} | |
int l = number.length(); | |
//Hundreds | |
if(number.length() >= 3) { | |
int hundreds = Integer.parseInt(number.substring(l-3, l-2)); | |
switch (hundreds) { | |
case 1: | |
sb.append("C"); | |
break; | |
case 2: | |
sb.append("CC"); | |
break; | |
case 3: | |
sb.append("CCC"); | |
break; | |
case 4: | |
sb.append("CD"); | |
break; | |
case 5: | |
sb.append("D"); | |
break; | |
case 6: | |
sb.append("DC"); | |
break; | |
case 7: | |
sb.append("DCC"); | |
break; | |
case 8: | |
sb.append("DCCC"); | |
break; | |
case 9: | |
sb.append("CM"); | |
break; | |
} | |
} | |
//Tens | |
if(number.length() >= 2) { | |
int tens = Integer.parseInt(number.substring(l-2, l-1)); | |
switch (tens) { | |
case 1: | |
sb.append("X"); | |
break; | |
case 2: | |
sb.append("XX"); | |
break; | |
case 3: | |
sb.append("XXX"); | |
break; | |
case 4: | |
sb.append("XL"); | |
break; | |
case 5: | |
sb.append("L"); | |
break; | |
case 6: | |
sb.append("LX"); | |
break; | |
case 7: | |
sb.append("LXX"); | |
break; | |
case 8: | |
sb.append("LXXX"); | |
break; | |
case 9: | |
sb.append("XC"); | |
break; | |
} | |
} | |
//Units | |
if(number.length() >= 1) { | |
int units = Integer.parseInt(number.substring(l-1, l)); | |
switch (units) { | |
case 1: | |
sb.append("I"); | |
break; | |
case 2: | |
sb.append("II"); | |
break; | |
case 3: | |
sb.append("III"); | |
break; | |
case 4: | |
sb.append("IV"); | |
break; | |
case 5: | |
sb.append("V"); | |
break; | |
case 6: | |
sb.append("VI"); | |
break; | |
case 7: | |
sb.append("VIII"); | |
break; | |
case 8: | |
sb.append("VIIII"); | |
break; | |
case 9: | |
sb.append("IX"); | |
break; | |
} | |
} | |
return sb.toString(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment