羅馬數字轉換阿拉伯數字(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類——異常處理類。程式碼如下: