JavaScript练习 - 数字转换成罗马数字

摘要:以下数字转换成罗马数字的方法估计是最傻的办法了。

一、思路

(1)把数字拆分,把每个数字都存入数组arr中;

(2)将数组arr中非0的数字存入新的数组arr1中;

(3)把数组arr1中的每个数字分别转化成罗马数字,并存入数组arr3中;

(4)将罗马数字拼接,即将数组arr3转为字符串。

二、知识点

(1)string.push();

(2)Math.floor(count/pagesize);      //  向下整除,4/3=1。

(3)switch 语句      // 这部分代码的使用估计是最傻最傻,没有之一的了。

swith(n) {
caes 1 : 执行代码块1;
break;
caes 2: 执行代码块2;
break; }

(4)string.join("");

三、代码

function convert(num) {
//把数字拆分,把每个数字都存入数组arr中
  var n0 = Math.floor(num/1000)*1000;
  var n1 = Math.floor((num-n0)/100)*100;
  var n2 = Math.floor((num-n1-n0)/10)*10;
  var n3 = num-n0-n1-n2;
  var arr = [];
  arr.push(n0,n1,n2,n3);
//把数字拆分,把每个数字都存入数组arr中
 var arr1 = [];
  for (var i in arr)
    if (arr[i] >0)
      arr1.push(arr[i] ); 
//把数组arr1中的每个数字分别转化成罗马数字,并存入数组arr3中(篇幅有限,只能转化1到3999的数字);
 var arr3=[];
  for( i in arr1) {
  switch (arr1[i]) {
      case 1 : 
      arr3.push("I");
      break;
      case 2 : 
      arr3.push("II");
      break;
      case 3 : 
      arr3.push("III");
      break;
      case 4 : 
      arr3.push("IV");
      break;
      case 5 : 
      arr3.push("V");
      break;
      case 6 : 
      arr3.push("VI");
      break;
      case 7 : 
      arr3.push("VII");
      break;
      case 8 : 
      arr3.push("VIII");
      break;
      case 9 : 
      arr3.push("IX");
      break;
      case 10 : 
      arr3.push("X");
      break;
      case 20 : 
      arr3.push("XX");
      break;
      case 30 : 
      arr3.push("XXX");
      break;
      case 40 : 
      arr3.push("XL");
      break;
      case 50 : 
      arr3.push("L");
      break;
      case 60 : 
      arr3.push("LX");
      break;
      case 70 : 
      arr3.push("LXX");
      break;
      case 80 : 
      arr3.push("LXXX");
      break;
      case 90 : 
      arr3.push("XC");
      break;
      case 100 : 
      arr3.push("C");
      break;
      case 200 : 
      arr3.push("CC");
      break;
      case 300 : 
      arr3.push("CCC");
      break;
      case 400 : 
      arr3.push("CD");
      break;
      case 500 : 
      arr3.push("D");
      break;
      case 600: 
      arr3.push("DC");
      break;
      case 700 : 
      arr3.push("DCC");
      break;
      case 800 : 
      arr3.push("DCCC");
      break;
      case 900: 
      arr3.push("CM");
      break;
      case 1000 : 
      arr3.push("M");
      break;
      case 2000 : 
      arr3.push("MM");
      break;
      case 3000 : 
      arr3.push("MMM");
      break;    
  }
  }
 //将罗马数字拼接,即将数组arr3转为字符串后返回。
  var arr2= arr3.join("");
  return arr2;
 }
四、测试案例

convert(2) 应该返回 "II"。

convert(3) 应该返回 "III"。

convert(4) 应该返回 "IV"。

convert(9) 应该返回 "IX"。

convert(29) 应该返回 "XXIX"。

convert(44) 应该返回 "XLIV"

convert(501) 应该返回 "DI"。

convert(649) 应该返回 "DCXLIX"。

convert(891) 应该返回 "DCCCXCI"。

convert(1023) 应该返回 "MXXIII"。

convert(3999) 应该返回 "MMMCMXCIX"。

五、结论

妥妥的,测试全部通过,投入使用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值