欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Intger To Roman

发布时间:2025/7/14 编程问答 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。