Intger To Roman
这题意思是将一个输入的整型阿拉伯数字转化为罗马数字。
思路是将1-10对应的罗马数字放在字符串数组里,然后发现数据变化规律即可,eg:389 = 300 + 89 +9 分别对应的罗马数字。
public static void main(String[] args) {
String[] strs = {"I","II","III","IV","V","VI","VII","VIII","IX","X"};
Scanner input = new Scanner(System.in);
System.out.print("请输入一个1-3999整数:");
int n = input.nextInt();
if(n < 1 || n >3999){
System.out.print("输入超出范围!");
}else{
String result = toRomanNumeral(strs,n);
System.out.println(result);
}
}
public static String toRomanNumeral(String[] strs, int n) {
StringBuffer sb = new StringBuffer();
if(n > 0 && n <= 10){
sb.append(strs[n-1]);
}else if(n>10 && n <=100){
sb.append(zhuanHua(n/10,strs)).append(strs[n%10-1]);
}else if(n>100 && n <= 1000){
sb.append(zhuanHua2(n/100,strs)).append(zhuanHua(n%100/10,strs)).append(strs[n%100%10-1]);
}else if(n>1000 && n <= 3999){
for(int i = 0; i < n/1000; ++i){
sb.append("M");
}
n%=1000;
sb.append(zhuanHua2(n/100,strs)).append(zhuanHua(n%100/10,strs)).append(strs[n%100%10-1]);
}else{
sb.append("输入超出范围!");
}
return sb.toString();
}
public static String zhuanHua2(int i, String[] strs) {
StringBuffer sb = new StringBuffer();
for(int j = 0; j < strs[i-1].length(); ++j){
char temp = strs[i-1].charAt(j);
if(temp == 'X'){
temp = 'M';
}else if(temp == 'I'){
temp = 'C';
}else if(temp == 'V'){
temp = 'D';
}
sb.append(temp);
}
return sb.toString();
}
public static String zhuanHua(int i, String[] strs) {
StringBuffer sb = new StringBuffer();
for(int j = 0; j < strs[i-1].length(); ++j){
char temp = strs[i-1].charAt(j);
if(temp == 'X'){
temp = 'C';
}else if(temp == 'I'){
temp = 'X';
}else if(temp == 'V'){
temp = 'L';
}
sb.append(temp);
}
return sb.toString();
}
转载于:https://www.cnblogs.com/huaiyinxiaojiang/p/6497341.html
Intger To Roman相关推荐
- 【leetcode】Roman to Integer
题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...
- LeetCode: 13. Roman to Integer
051106 题目 Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol ...
- # LeetCode集锦(四) - 第13题 Roman To Integer
LeetCode集锦(四) - 第13题 Roman To Integer 问题 Roman numerals are represented by seven different symbols: ...
- 整数转换为罗马数字 Integer to Roman
2019独角兽企业重金招聘Python工程师标准>>> 问题: Given an integer, convert it to a roman numeral. Input is g ...
- Integer to Roman 问题
Integer to Roman 问题 leetcode java 1.问题描述 Given an integer, convert it to a roman numeral.Input is gu ...
- 罗马数字转整数 · Roman to Integer
13. Roman to Integer [抄题]: [暴力解法]: 时间分析: 空间分析: [思维问题]: 没有想到罗马字是逆序的情况 没有想到要先用toCharArray()方法把字符串拆成一个字 ...
- Roman to Integer LeetCode Java
描述 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...
- 【LeetCode】13. Roman to Integer
题目: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from ...
- Roman to Integer
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
最新文章
- VTK:可视化之LabelContours
- BZOJ 2179 [快速傅里叶变换 高精度乘法]
- Vue 快速集成ElementUI
- Python 正则模块的应用
- 网站制作---eWebeditor不兼容IE8问题的解决方法
- TypeScript 热度超 C 与 Python、Go 开发收入高、运维吃香,调查了 65000 名开发者有这些发现!...
- 解决spring的xml文件打开没有namespace等操作选项的问题
- 真实教育场景手写/表格/公式OCR数据集
- 从零基础入门Tensorflow2.0 ----三、10. 近似求导
- Postman如何生成测试报告
- 一个非常好的学习方法总结
- 三角函数 公式【和差化积、积化和差】最简记忆口诀
- 通过scheme协议启动app
- 盛诺基和信达生物达成临床研究合作
- 在线学习及作业平台管理系统(ssm,mysql)
- matlab 指数拟合原理,matlab指数增长和阻滞增长拟合代码.doc
- win7安全模式计算机管理在哪里,Win7怎么进入安全模式 3种方法轻松进入Win7安全模式...
- CSDN的博客,一声叹息
- 逆王传说兑换码入口在哪里?最新礼包码CDKey汇总大全
- winform 鼠标 静止时间_双飞燕飞时代FG30S鼠标评测,谁说静音手感不两全?