罗马数字java代码,罗马数字的产生

JAVA 整数变罗马数字

一直对古罗马数字感兴趣,借这个题学习了一下,得出

创新互联建站作为成都网站建设公司,专注重庆网站建设、网站设计,有关成都定制网页设计方案、改版、费用等问题,行业涉及成都地磅秤等多个领域,已为上千家企业服务,得到了客户的尊重与认可。

罗马数转阿拉伯数,算法伪代码:

设输入"MCMLIV"为t,设输出数为sum=0,设最大字符数值为m=0

从右往左遍历t中的字符,比较方便

当遍历字符代表的值c大于等于m时,m=c且sum+=c(对应3III等的情况);否则sum减去该值c(对应4IV,9IX等情况)

比如依次VILMCM依次对应+5, -1, +50, +1000, -100, +1000, 得1954

遍历完输出阿拉伯数sum.

==============

阿拉伯数转罗马数,算法:

视罗马数为十进制,每数位有1,2,3,4,5,6,7,8,9共9种符号(无0)

设全进制单位为a(比如I1, X10, C100, M1000),设半进制单位为b(比如V5, L50, D500),

分别对应固定形式表示法:

1 a; 2 aa; 3 aaa; 4 ab; 5 b; 6 ba; 7 baa; 8 baaa; 9 a(a2)

对于数字2016逐数位分解

2千 得 MM

0百 得 无

1十 得X

6得 VI

合并得MMXVI即2016

原理通了代码实现就非常简单了

java 1-999之内的阿拉伯数字变罗马数字!

public class Test {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int s = Integer.parseInt(sc.next());

System.out.println(toRome(s));

sc.close();

}

// 阿拉伯数字转罗马数字:

// 把所有小数字在前的组合也作为基本数字,再做一个对应的数值表就可以解决问题了。

// I、V、X、 L、 C、 D、 M

// 1.5、10、50、100、500、1000

private static String toRome(int aNumber){

if(aNumber 1 || aNumber 3999){

return "-1";

}

int[] aArray = {1000,900,500,400,100,90,50,40,10,9,5,4,1};

String[] rArray = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};

String rNumber = "";

for(int i=0; iaArray.length; i++){

while(aNumber = aArray[i]){

rNumber += rArray[i];

aNumber -= aArray[i];

}

}

return rNumber;

}

}

Java 编程实例 要编写 罗马数字的加减运算

Java中有各国的文字段,正则表达式这玩意专门匹配各国语言的~

比如匹配汉字:

Pattern p=Pattern.Compile("[\u4e00-\u9fa5]");而匹配罗马数字的是:

^[1-9]\d*$   

//匹配正整数

^-[1-9]\d*$  

//匹配负整数

^-?[1-9]\d*$

//匹配整数

^[1-9]\d*|0$ 

//匹配非负整数(正整数 + 0)

^-[1-9]\d*|0$

//匹配非正整数(负整数 + 0)

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 

  //匹配正浮点数

^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 

//匹配负浮点数

^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$ 

//匹配浮点数

^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$ 

  //匹配非负浮点数(正浮点数 + 0)

^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$ 

 //匹配非正浮点数(负浮点数 + 0)


分享文章:罗马数字java代码,罗马数字的产生
本文URL:http://myzitong.com/article/dsschoo.html