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();
}
Intger To Roman的更多相关文章
- [LeetCode] Roman to Integer 罗马数字转化成整数
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- [LeetCode] Integer to Roman 整数转化成罗马数字
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...
- 【leetcode】Roman to Integer
题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...
- [Leetcode] Roman to Integer
Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...
- Integer to Roman -- LeetCode 012
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...
- 【LeetCode】Roman to Integer & Integer to Roman
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
- No.013:Roman to Integer
问题: Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from ...
- 【leetcode】Integer to Roman
Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...
- 【leetcode】Integer to Roman & Roman to Integer(easy)
Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t ...
随机推荐
- 【Android Developers Training】 63. 定义形状
注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...
- kindeditor使用入门-张国红
kindeditor是在线编辑器,比较好用,以下是使用这个插件的步骤. 下载kindeditor-4.1.10.zip 解压 asp,asp.net,php对于jsp开发没有用,可以删除 新建web工 ...
- Vijos 1034 家族 并查集
描述 若某个家族人员过于庞大,要判断两个是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系. 规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚.如果x,y是亲戚 ...
- MyBatis源码解析【5】工厂的构建
前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 终于算是把装备弄齐全 ...
- angular.extend、angular.$watch、angular.bootstrap
1.angular.extend:依次将第二个参数及后续的参数的第一层属性(不管是简单属性还是对象)拷贝给第一个参数的第一层属性,即如果是对象,则是引用的是同一个对象,并返回第一个参数对象. 直接上代 ...
- 使用pycurl探测web服务质量
1:pycurl模块的安装方法 easy_install pycurl pip install pycurl 2:示例代码如下,是在python3下实现的,如若使用python2稍作修改即可 # -* ...
- FineReport单元格扩展与父子格设置
1.描述 在讲述报表设计之前,首先介绍一下FineReport报表制作的几个基本概念,本章节介绍FineReport报表赖以生存的单元格扩展. 扩展,顾名思义,就是由一变多,那么单元格扩展就是指在we ...
- OpenStack neutron 环境云主机使用keepalived vip + 给vip绑定浮动IP 步骤及注意事项
在openstack环境创建的多台云主机配置keepalived作主备,默认情况下无法生效,直接对云主机一张网卡配置两个IP进行测试也是同样结果,因为: 可以看到,port所在的宿主机上iptable ...
- 输入3个数a,b,c,按大小顺序输出
题目:输入3个数a,b,c,按大小顺序输出 package com.li.FiftyAlgorthm; import java.util.Scanner; /** * 题目:输入3个数a,b,c,按大 ...
- CentOS7的网卡启动不起来的问题
这个问题在刚学Linux遇到的,centOS7的网卡启动不起来,导致建不了集群.如下图没有ifconf-env33网卡的IP 还有下面这个图>>> 如果你遇到了,呵呵呵,迷之微笑. ...