ตัวอย่างโคด
package demo; import java.math.BigDecimal; /** * @author nopphanan7 * ตัวเลขโรมันมีค่าตั้งแต่ 1 ถึง 3999 เท่านั้น */ public final class RomanNumber { private static final String[] ROMAN = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX","V", "IV", "I"}; private static final int[] DIGIT = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; private String valueText; // ···········Methods·············· public String getText(int amount) { BigDecimal value = new BigDecimal(amount); this.valueText = getRomanNumber(value); return this.valueText; } public String getText(long amount) { BigDecimal value = new BigDecimal(amount); this.valueText = getRomanNumber(value); return this.valueText; } public String getText(String amount) { BigDecimal value = new BigDecimal(amount.trim()); this.valueText = getRomanNumber(value); return this.valueText; } public String getText(Number amount) { BigDecimal value = new BigDecimal(String.valueOf(amount)); this.valueText = getRomanNumber(value); return this.valueText; } private static String getRomanNumber(BigDecimal amount) { String roman = ""; if (amount.compareTo(BigDecimal.ONE) < 0) { return "Value of RomanNumeral must be positive."; } if (amount.compareTo(BigDecimal.valueOf(new Long("3999"))) > 0 ) { return "Value of RomanNumeral must be 3999 or less."; } int N = Integer.parseInt(amount.toString()); for (int i = 0; i < DIGIT.length; i++) { while (N >= DIGIT[i]) { roman += ROMAN[i]; N -= DIGIT[i]; } } return roman; } /** * @param args */ public static void main(String[] args) { System.out.println("value of 1 : " + new RomanNumber().getText(1)); System.out.println("value of 2 : " + new RomanNumber().getText(2)); System.out.println("value of 3 : " + new RomanNumber().getText(3)); System.out.println("value of 4 : " + new RomanNumber().getText(4)); System.out.println("value of 5 : " + new RomanNumber().getText(5)); System.out.println("value of 6 : " + new RomanNumber().getText(6)); System.out.println("value of 7 : " + new RomanNumber().getText(7)); System.out.println("value of 8 : " + new RomanNumber().getText(8)); System.out.println("value of 9 : " + new RomanNumber().getText(9)); System.out.println("value of 10 : " + new RomanNumber().getText(10)); System.out.println("value of 123 : " + new RomanNumber().getText("123")); System.out.println("value of 3234 : " + new RomanNumber().getText("3234")); } }ผลลัพธ์ที่ได้คือ
value of 1 : I value of 2 : II value of 3 : III value of 4 : IV value of 5 : V value of 6 : VI value of 7 : VII value of 8 : VIII value of 9 : IX value of 10 : X value of 123 : CXXIII value of 3234 : MMMCCXXXIV
0 comments:
Post a Comment