罗马数字转换阿拉伯数字(Java版,考虑较为全面) - li002qwe的专栏 - 博客频道 - CSDN.NET
一. 前言
朋友的作业,本想在网上找个现成的改改就行啦。可是一番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。