2018-04-20 16:06:22 631浏览
本文实例讲述了Java培训之实现经典罗马数字和阿拉伯数字相互转换问题。分享给大家供大家参考,具体如下:
I1 V5 X10 L50 C100 D500 M1000
I,1 II,2 III,3 IV,4 V,5 VI,6 VII,7 VIII,8 IX,9 X,10 XI,11 XII,12 XIII,13 XIV,14 XV,15 XVI,16 XVII,17 XVIII,18 XIX,19 XX,20 XXI,21 XXII,22 XXIX,29 XXX,30 XXXIV,34 XXXV,35 XXXIX,39 XL,40 L,50 LI,51 LV,55 LX,60 LXV,65 LXXX,80 XC,90 XCIII,93 XCV,95 XCVIII,98 XCIX,99 C,100 CC,200 CCC,300 CD,400 D,500 DC,600 DCC,700 DCCC,800 CM,900 CMXCIX,999
3 LXXX XCIII DCCII
80 93 702
importjava.util.Scanner; /** *请编写程序,由用户输入若干个罗马数字串,程序输出对应的十进制表示。 * *输入格式是:第一行是整数n,表示接下来有n个罗马数字(n<100)。以后每行一个罗马数字。罗马数字大小不超过999。 * *要求程序输出n行,就是罗马数字对应的十进制数据。 * *例如,用户输入:3LXXXXCIIIDCCII * *则程序应该输出:8093702 * *@authorAdministrator * */ publicclassRomeToArabic{ publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub System.out.println("脚本之家测试结果:"); ScannermScanner=newScanner(System.in); System.out.println(r2a(mScanner.nextLine())); System.out.println(a2r(mScanner.nextInt())); } /** *把罗马数字转换为阿拉伯数字 * *@paramm *@return */ publicstaticintr2a(Stringm){ intgraph[]=newint[400]; graph['I']=1; graph['V']=5; graph['X']=10; graph['L']=50; graph['C']=100; graph['D']=500; graph['M']=1000; char[]num=m.toCharArray(); intsum=graph[num[0]]; for(inti=0;i<num.length-1;i++){ if(graph[num[i]]>=graph[num[i+1]]){ sum+=graph[num[i+1]]; }else{ sum=sum+graph[num[i+1]]-2*graph[num[i]]; } } returnsum; } /** *把阿拉伯数字转换为罗马数字 * *@paramnumber *@return */ publicstaticStringa2r(intnumber){ StringrNumber=""; 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"}; if(number<1||number>3999){ rNumber="-1"; }else{ for(inti=0;i<aArray.length;i++){ while(number>=aArray[i]){ rNumber+=rArray[i]; number-=aArray[i]; } } } returnrNumber; } }
以上就是关于Java培训之实现经典罗马数字和阿拉伯数字相互转换问题示例的详细介绍,最后想要了解更多关于Java开发问题的小伙伴可以登录扣丁学堂官网咨询。扣丁学堂是专业的Java培训机构,不仅有专业的老师和与时俱进的课程体系,还有大量的Java视频教程供学员观看学习,想要学好Java的小伙伴抓紧时间行动吧。Java技术交流群:670348138。
【关注微信公众号获取更多学习资料】