这题意思是将一个输入的整型阿拉伯数字转化为罗马数字。

思路是将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的更多相关文章

  1. [LeetCode] Roman to Integer 罗马数字转化成整数

    Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...

  2. [LeetCode] Integer to Roman 整数转化成罗马数字

    Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...

  3. 【leetcode】Roman to Integer

    题目描述: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range fr ...

  4. [Leetcode] Roman to Integer

    Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 t ...

  5. 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 ...

  6. 【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 ...

  7. No.013:Roman to Integer

    问题: Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from ...

  8. 【leetcode】Integer to Roman

    Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within t ...

  9. 【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 ...

随机推荐

  1. as 快捷键

    as  快捷键 Ctrl+G / Ctrl+Alt+Shift+G:查询变量或者函数或者类在哪里被使用或被调用,后者是前者的复杂表现,可以选择查询范围等. Alt+H:查找功能,全局查找 F4:查看类 ...

  2. meta小结

    mate 标签定义及使用说明 元数据(Metadata)是数据的数据信息. 标签提供了 HTML 文档的元数据.元数据不会显示在客户端,当时会被浏览器解析. META元素通常用于指定网页的描述,关键词 ...

  3. weblogic 部署问题定位与解决

    weblogic 做为商用中间件在(EJB.jndi 数据源.日志管理.内存管理.资源配置管理...)  是一些开源免费小型容器无法望其项背的. weblogic 最早由 weblogic Inc. ...

  4. JavaScript函数的各种调用模式

    函数是JavaScript世界里的第一公民,换句话来说,就是我们如果可以精通JavaScript函数的使用,那么对JavaScript的运用可以更游刃有余了.熟悉JavaScript的人应该都知道,同 ...

  5. angularjs directive (自定义标签解析)

    angularjs directive (自定义标签解析) 定义tpl <!-- 注意要有根标签 --> <div class="list list-inset" ...

  6. Linux 重启和关机命令

    shutdown -r  05:30   在凌晨五点30分关机     shutdown -r  05:30 &     后台执行     shutdown -c    取消前一个关机命令   ...

  7. Java面试常考------------------------垃圾收集算法

    对于Java系学生而言,Java虚拟机中的垃圾收集算法是一个很重要的面试考点. 常用的垃圾收集算法主要可划分为以下三类: 1. 标记-清除算法 标记清除算法是一种比较简单的方法,直接标记内存中待回收的 ...

  8. 记一次SAP新业务开发项目

    直到笔者写这篇博文的时候,这个开发项目名义上已经上线,但其实开发以及优化的工作还在继续,数据的修复也仍在继续... IT系统环境很简单,一个基于JAVA+Mysql的Web平台,一个是宇宙第一的SAP ...

  9. C#获取数据库连接字符

    有两种用法:1)using System.Configuraiton; string ConStr=ConfigurationManager.ConnectionStrings["ConSt ...

  10. java环境配置,试用和基本数据结构

    一.java环境配置 1.打开我的电脑--属性--高级--环境变量 2.新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:jdk文件所在的路经变量名:CLASS ...