lots of exercises in java... from https://github.com/exercism/java

RomanNumeral.java 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import java.util.Map;
  2. import java.util.LinkedHashMap;
  3. public class RomanNumeral {
  4. private int arabicNumeral;
  5. private static final Map<Integer, String> arabicToRomanConversions = new LinkedHashMap<>();
  6. static {
  7. arabicToRomanConversions.put(1000, "M");
  8. arabicToRomanConversions.put(900, "CM");
  9. arabicToRomanConversions.put(500, "D");
  10. arabicToRomanConversions.put(400, "CD");
  11. arabicToRomanConversions.put(100, "C");
  12. arabicToRomanConversions.put(90, "XC");
  13. arabicToRomanConversions.put(50, "L");
  14. arabicToRomanConversions.put(40, "XL");
  15. arabicToRomanConversions.put(10, "X");
  16. arabicToRomanConversions.put(9, "IX");
  17. arabicToRomanConversions.put(5, "V");
  18. arabicToRomanConversions.put(4, "IV");
  19. arabicToRomanConversions.put(1, "I");
  20. }
  21. public RomanNumeral(int arabicNumeral) {
  22. this.arabicNumeral = arabicNumeral;
  23. }
  24. public String getRomanNumeral() {
  25. StringBuilder romanNumeral = new StringBuilder();
  26. for (Map.Entry<Integer, String> conversion : arabicToRomanConversions.entrySet()) {
  27. while (arabicNumeral / conversion.getKey() > 0) {
  28. arabicNumeral -= conversion.getKey();
  29. romanNumeral.append(conversion.getValue());
  30. }
  31. }
  32. return romanNumeral.toString();
  33. }
  34. }