1. 程式人生 > >羅馬數字轉換阿拉伯數字(Java版,考慮較為全面)

羅馬數字轉換阿拉伯數字(Java版,考慮較為全面)

一. 前言

     朋友的作業,本想在網上找個現成的改改就行啦。可是一番google、baidu之後,找到的要麼不是Java版本的,要麼就是考慮的不夠全面。遂,筆者自己寫了個,如有考慮不全面的地方,望大家能夠指出。下面進入正題。

二. 羅馬數字規則

      羅馬數字無表示零的數。

      表示數的基本方法:除I、X、C位於大數後作為加數,位於大數前作為減數外,一般把若干羅馬基本數字寫在一起,它表示的數字等於各個數字的和。

     1. 重寫:   III(3)      XX(20)     CC(200)   

     2. 左減:   IX(9)      XL(40)     CD(400)

     3. 右加:   VII(7)     XI(11)      LX(60)

     4. 綜合前三種方法:XLV(L-X+V,45)   LXII(L+X+I+I,62)

     若在數字上方加一橫線,表示增大1000倍。(此規則由於如果輸入,故程式中未實現)

     注意點:

     1.  I、X、C在大數右邊(即相加時)不能連續超過三個,在大數左邊(即相減時)只能用一個。

     2.  V、L、D不能用於大數左邊(相減),只能用於大數右邊(相加),且只使用一個。

     3.  V、X左邊小數只用I;L、C左邊小數只用X;D、M左邊小數只用C。

三. 原始碼

      共有三個class——Roman、RomanConverter、RomanException。

      Roman類——分析輸入是否符合羅馬數字的規則;羅馬數字轉換為阿拉伯數字。程式碼如下:

     

      RomanConverter類——main函式的入口類,用於測試羅馬數字的轉換。程式碼如下:    

     

      RomanException類——異常處理類。程式碼如下: