Java实现整数互转罗马数字基本算法

目录

一、罗马数字的起源? 

二、算法代码

(1)整数转罗马数字算法代码

(2)罗马数字转整数算法代码

三、测试结果

(1)整数转罗马数字测试结果

(2)罗马数字转整数测试结果 


一、罗马数字的起源? 

罗马数字比阿拉伯数字早 2000 多年,起源于古罗马。
大约在两千五百年前,罗马人还处在文化发展的初期,当时他们用手指作为计算工具。为了表示一、二、三、四个物体,就分别伸出一、二、三、四个手指;表示五个物体就伸出一只手;表示十个物体就伸出两只手。这种习惯人类一直沿用到今天。人们在交谈中,往往就是运用这样的手势来表示数字的。
当时,罗马人为了记录这些数字,便在羊皮上画出 Ⅰ、Ⅱ、Ⅲ 来代替手指的数;要表示一只手时,就写成“Ⅴ”形,表示大指与食指张开的形状;表示两只手时,就画成“ⅤⅤ”形,后来又写成一只手向上、一只手向下的“Ⅹ”,这就是罗马数字的雏形。
后来为了表示较大的数,罗马人用符号 C 表示一百。C 是拉丁文“centum”的头一个字母,centum 就是一百的意思(英文“century”就是由此而来)。用符号 M 表示一千。M 是拉丁文“mille”的头一个字母,mille 就是一千的意思。取字母 C 的一半,成为符号 L,表示五十。用字母 D 表示五百。若在数的上面画一横线,这个数就扩大一千倍。这样,罗马数字就有下面七个基本符号:I(1)、V(5)、X(10)、L(50)、C(100)、D(500)、 M(1000)。罗马数字与十进位数字的意义不同,它没有表示零的数字,与进位制无关。所以当时的人们表示0用空格表示。

二、算法代码

(1)整数转罗马数字算法代码

package learnProject.csdn;import java.util.Random;/*** * @author Roc-xb**/
public class IntegerToRoman {private static int[] values = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };private static String[] symbols = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };public static String intToRoman(int num) {StringBuilder sb = new StringBuilder();int i = 0;while (num > 0) {if (num >= values[i]) {sb.append(symbols[i]);num -= values[i];} else {i++;}}return sb.toString();}public static void main(String[] args) {for (int num = 1; num <= 100; num++) {// 随机测试int randomInt = new Random().nextInt(1000);System.out.println(String.format("整数【%d】用罗马数字表示:%s", randomInt, intToRoman(randomInt)));}}
}

(2)罗马数字转整数算法代码

package learnProject.csdn;public class RomanToInteger {public static int romanToInt(String s) {int result = 0;int prevValue = 0;for (int i = s.length() - 1; i >= 0; i--) {char c = s.charAt(i);int currValue = getRomanValue(c);if (currValue < prevValue) {result -= currValue;} else {result += currValue;}prevValue = currValue;}return result;}public static int getRomanValue(char c) {switch (c) {case 'I':return 1;case 'V':return 5;case 'X':return 10;case 'L':return 50;case 'C':return 100;case 'D':return 500;case 'M':return 1000;default:return 0;}}public static void main(String[] args) {String roman = "DCCLXXXVIII";int num = romanToInt(roman);System.out.println(String.format("%s罗马数字转换成整数为:%d",roman, num));}
}

三、测试结果

(1)整数转罗马数字测试结果

整数【260】用罗马数字表示:CCLX
整数【806】用罗马数字表示:DCCCVI
整数【652】用罗马数字表示:DCLII
整数【814】用罗马数字表示:DCCCXIV
整数【539】用罗马数字表示:DXXXIX
整数【456】用罗马数字表示:CDLVI
整数【788】用罗马数字表示:DCCLXXXVIII
整数【613】用罗马数字表示:DCXIII
整数【756】用罗马数字表示:DCCLVI
整数【235】用罗马数字表示:CCXXXV
整数【281】用罗马数字表示:CCLXXXI
整数【27】用罗马数字表示:XXVII
整数【389】用罗马数字表示:CCCLXXXIX
整数【138】用罗马数字表示:CXXXVIII
整数【387】用罗马数字表示:CCCLXXXVII
整数【927】用罗马数字表示:CMXXVII
整数【712】用罗马数字表示:DCCXII
整数【291】用罗马数字表示:CCXCI
整数【328】用罗马数字表示:CCCXXVIII
整数【955】用罗马数字表示:CMLV
整数【104】用罗马数字表示:CIV
整数【754】用罗马数字表示:DCCLIV
整数【511】用罗马数字表示:DXI
整数【256】用罗马数字表示:CCLVI
整数【755】用罗马数字表示:DCCLV
整数【938】用罗马数字表示:CMXXXVIII
整数【9】用罗马数字表示:IX
整数【501】用罗马数字表示:DI
整数【238】用罗马数字表示:CCXXXVIII
整数【465】用罗马数字表示:CDLXV
整数【853】用罗马数字表示:DCCCLIII
整数【771】用罗马数字表示:DCCLXXI
整数【271】用罗马数字表示:CCLXXI
整数【189】用罗马数字表示:CLXXXIX
整数【561】用罗马数字表示:DLXI
整数【427】用罗马数字表示:CDXXVII
整数【561】用罗马数字表示:DLXI
整数【255】用罗马数字表示:CCLV
整数【935】用罗马数字表示:CMXXXV
整数【513】用罗马数字表示:DXIII
整数【956】用罗马数字表示:CMLVI
整数【900】用罗马数字表示:CM
整数【337】用罗马数字表示:CCCXXXVII
整数【630】用罗马数字表示:DCXXX
整数【19】用罗马数字表示:XIX
整数【328】用罗马数字表示:CCCXXVIII
整数【119】用罗马数字表示:CXIX
整数【619】用罗马数字表示:DCXIX
整数【83】用罗马数字表示:LXXXIII
整数【161】用罗马数字表示:CLXI
整数【28】用罗马数字表示:XXVIII
整数【930】用罗马数字表示:CMXXX
整数【622】用罗马数字表示:DCXXII
整数【692】用罗马数字表示:DCXCII
整数【79】用罗马数字表示:LXXIX
整数【785】用罗马数字表示:DCCLXXXV
整数【862】用罗马数字表示:DCCCLXII
整数【216】用罗马数字表示:CCXVI
整数【646】用罗马数字表示:DCXLVI
整数【704】用罗马数字表示:DCCIV
整数【785】用罗马数字表示:DCCLXXXV
整数【115】用罗马数字表示:CXV
整数【127】用罗马数字表示:CXXVII
整数【989】用罗马数字表示:CMLXXXIX
整数【624】用罗马数字表示:DCXXIV
整数【566】用罗马数字表示:DLXVI
整数【613】用罗马数字表示:DCXIII
整数【105】用罗马数字表示:CV
整数【782】用罗马数字表示:DCCLXXXII
整数【774】用罗马数字表示:DCCLXXIV
整数【664】用罗马数字表示:DCLXIV
整数【117】用罗马数字表示:CXVII
整数【115】用罗马数字表示:CXV
整数【981】用罗马数字表示:CMLXXXI
整数【11】用罗马数字表示:XI
整数【67】用罗马数字表示:LXVII
整数【510】用罗马数字表示:DX
整数【824】用罗马数字表示:DCCCXXIV
整数【850】用罗马数字表示:DCCCL
整数【79】用罗马数字表示:LXXIX
整数【735】用罗马数字表示:DCCXXXV
整数【496】用罗马数字表示:CDXCVI
整数【925】用罗马数字表示:CMXXV
整数【341】用罗马数字表示:CCCXLI
整数【238】用罗马数字表示:CCXXXVIII
整数【169】用罗马数字表示:CLXIX
整数【6】用罗马数字表示:VI
整数【856】用罗马数字表示:DCCCLVI
整数【625】用罗马数字表示:DCXXV
整数【397】用罗马数字表示:CCCXCVII
整数【457】用罗马数字表示:CDLVII
整数【448】用罗马数字表示:CDXLVIII
整数【441】用罗马数字表示:CDXLI
整数【47】用罗马数字表示:XLVII
整数【193】用罗马数字表示:CXCIII
整数【173】用罗马数字表示:CLXXIII
整数【33】用罗马数字表示:XXXIII
整数【263】用罗马数字表示:CCLXIII
整数【870】用罗马数字表示:DCCCLXX
整数【724】用罗马数字表示:DCCXXIV

(2)罗马数字转整数测试结果 

DCCLXXXVIII罗马数字转换成整数为:788

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/126184.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Pytorch笔记】6.Transforms

pytorch官方文档 - transforms transforms需要使用计算机视觉工具包&#xff1a;torchvision。 torchvision.transforms&#xff1a;常用的图像预处理方法&#xff1b; torchvision.datasets&#xff1a;常用数据集的dataset实现&#xff0c;如MNIST、CIFAR-10、ImageNet等&am…

基于腾讯云的OTA远程升级

一、OTA OTA即over the air,是一种远程固件升级技术&#xff0c;它允许在设备已经部署在现场运行时通过网络远程更新其固件或软件。OTA技术有许多优点&#xff0c;比如我们手机系统有个地方做了优化&#xff0c;使用OTA技术我们就不用召回每部手机&#xff0c;直接通过云端就可…

华为云云耀云服务器L实例评测|云耀云服务器L实例部署DjangoBlog个人博客系统

华为云云耀云服务器L实例评测&#xff5c;云耀云服务器L实例部署DjangoBlog个人博客系统 一、云耀云服务器L实例介绍1.1 云耀云服务器L实例简介1.2 云耀云服务器L实例特点 二、DjangoBlog介绍2.1 DjangoBlog介绍2.2 DjangoBlog特点 三、本次实践介绍3.1 本次实践简介3.2 本次环…

Stable diffusion的架构解读(本博客还是以unet架构为主)

博客只是简单的记录一下自己学的&#xff0c;基于自己的一些情况&#xff0c;所以简单了一些只是将来忘记&#xff0c;用来回顾用。 论文的大体框架 unet结构位于 unet会接受prompt特征、latent特征、和t时间步特征&#xff0c;最后生成新一轮的特征 可以参考知乎大佬htt…

【AI视野·今日CV 计算机视觉论文速览 第262期】Fri, 6 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 6 Oct 2023 Totally 73 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Improved Baselines with Visual Instruction Tuning Authors Haotian Liu, Chunyuan Li, Yuheng Li, Yong Jae Lee大型多模…

暴力破解及验证码安全

1.暴力破解注意事项 1、破解前一定要有一个有郊的字典&#xff08;Top100 TOP2000 csdn QQ 163等密码&#xff09; https://www.bugku.com/mima/ 密码生成器 2、判断用户是否设置了复杂的密码 在注册页面注册一个,用简单密码看是否可以注册成功 3、网站是…

【网络安全-信息收集】网络安全之信息收集和信息收集工具讲解(提供工具)

工具下载百度网盘链接(包含所有用到的工具&#xff09;&#xff1a; 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固&#xff0c;支持教育网加速&#xff0c;支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.…

【C语言|关键字】C语言32个关键字详解

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

Iphone文件传到电脑用什么软件,看这里

在数字化时代&#xff0c;文件传输已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;苹果用户在将手机文件传输到电脑时&#xff0c;往往会面临一些困扰。曾经的“文件传输助手”并不能完全满足用户的需求。于是&#xff0c;很多人开始寻找更便捷的解决方案。在本文中…

Zabbix自定义脚本监控MySQL数据库

一、MySQL数据库配置 1.1 创建Mysql数据库用户 [rootmysql ~]# mysql -uroot -p create user zabbix127.0.0.1 identified by 123456; flush privileges; 1.2 添加用户密码到mysql client的配置文件中 [rootmysql ~]# vim /etc/my.cnf.d/client.cnf [client] host127.0.0.1 u…

蓝桥杯每日一题2023.10.2

时间显示 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 输入为毫秒&#xff0c;故我们可以先将毫秒转化为秒&#xff0c;由于只需要输出时分&#xff0c;我们只需要将天数去除即可&#xff0c;可以在这里多训练一次天数判断 #include<bits/stdc.h> using namespace std…

总结二:linux面经

文章目录 1、 Linux中查看进程运行状态的指令、查看内存使用情况的指令、tar解压文件的参数。2、文件权限怎么修改&#xff1f;3、说说常用的Linux命令&#xff1f;4、说说如何以root权限运行某个程序&#xff1f;5、 说说软链接和硬链接的区别&#xff1f;6、说说静态库和动态…