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

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