ตัวอย่างโคด
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 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" )); } } |
1 2 3 4 5 6 7 8 9 10 11 12 | 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