美文网首页
罗马数与整数的相互转换

罗马数与整数的相互转换

作者: 丑小丫_91b3 | 来源:发表于2018-10-18 16:31 被阅读0次

相互转换的过程很简单,但是首先第一步就是要搞清楚罗马数字的规律,还是ting有意思的~~~

罗马数字总共有七种字符,对应的数字如下:

                  I               1

                  V              5

                  X             10

                  L               50

                  C              100

                  D               500

                  M              1000

如:I,II,III,IV,V,VI,VII,VIII,IX,X分别对应1,2,3,4,5,6,7,8,9,10。可以发现小于4的,就是I一直叠加,4(IV)是右边的数减去左边的数,大于V小于X就是右边的数加上左边的数,以此类推。。。

下面分别是罗马数转整数和整数转罗马数:

import java.util.HashMap;

import java.util.Scanner;

public class RomanAndInt {

//罗马数转整数

public int RomanToInt(){

Scanner sc =new Scanner(System.in);

String Lnumber=sc.next();

if(Lnumber==null|| Lnumber.length()==0){

return -1;

}

HashMap map=new HashMap();

map.put('I',1);

map.put('V',5);

map.put('X',10);

map.put('L',50);

map.put('C',100);

map.put('D',500);

map.put('M',1000);

int result=map.get(Lnumber.charAt(Lnumber.length()-1));

for(int i=Lnumber.length()-2;i>=0;i--){

if(map.get(Lnumber.charAt(i))>=map.get(Lnumber.charAt(i+1))){

result+=map.get(Lnumber.charAt(i));

}else{

result-=map.get(Lnumber.charAt(i));

}

}

return result;

}

//整数转罗马数

public String IntToRoman(){

Scanner sc=new Scanner(System.in);

int number=sc.nextInt();

StringBuilder sb=new StringBuilder();

String[][] roman={

{"","I","II","III","IV","V","VI","VII","VIII","IX"},

{"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},

{"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},

{"","M","MM","MMM"}

};

sb.append(roman[3][number/1000%10]);

sb.append(roman[2][number/100%10]);

sb.append(roman[1][number/10%10]);

sb.append(roman[0][number%10]);

String result=""+sb;

return result;

}

public static void main(String[] args){

RomanAndInt re=new RomanAndInt();

re.RomanToInt();

re.IntToRoman();

}

}

相关文章

  • 罗马数与整数的相互转换

    相互转换的过程很简单,但是首先第一步就是要搞清楚罗马数字的规律,还是ting有意思的~~~ 罗马数字总共有七种字符...

  • LeetCode解题思路记事本

    文|Seraph 两数之和 两数相加 整数反转 字符串转换整数(atoi) 罗马数字转整数 最长公共前缀 有效的括...

  • python方法、技巧摘录

    Python字符串、整数、和浮点型数相互转换 int(str)函数将符合整数的规定的字符串转换成int型的 flo...

  • 整数罗马文转换

    罗马文转换将数字转换为罗马文罗马文有数字表示"I V X L C D M", 分别代表数字 1 5 10 50 1...

  • LeetCode-12 整数转罗马数字

    题目:12. 整数转罗马数字 难度:中等 分类:数学、字符串 解决方案:整数比较 今天我们学习第12题整数转罗马数...

  • 大厂面试高频题:十进制有理数转二进制算法

    十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并...

  • 13罗马数转整数

    2019年04月19日 Day03 级别:简单 LeetCode 13 题目: 罗马数字转整数 罗马数字包含...

  • Leetcode 数学类型总结

    7.整数反转 12.整数转罗马数字 13.罗马数字转整数 29.两数相除 50.Pow(x,y) 60.第k个排列...

  • 计蒜客 第十二题 整数转换成罗马数字

    给定一个整数 num,将整数转换成罗马数字。 如 1,2,3,4,5 对应的罗马数字分别为I,II,III,IV,...

  • 13. Roman to Integer 罗马转数字

    题目 将罗马数字转换成整数,整数范围在 [1,3999] 之间 解析 由于罗马数字存在左小右大的特殊情况,所以从左...

网友评论

      本文标题:罗马数与整数的相互转换

      本文链接:https://www.haomeiwen.com/subject/aykszftx.html