用JAVA写个程序,用户输入一个3999以内的阿拉伯数字,可以输出对应的罗马数字

如题所述

public class Test {
    
    
     public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int s = Integer.parseInt(sc.next());
            System.out.println(toRome(s));
            sc.close();
        }
      
        // 阿拉伯数字转罗马数字:
        // 把所有小数字在前的组合也作为基本数字,再做一个对应的数值表就可以解决问题了。
        // I、V、X、   L、   C、     D、     M
        // 1.5、10、50、100、500、1000
        private static String toRome(int aNumber){
            if(aNumber < 1 || aNumber > 3999){
                return "-1";
            }
            int[] aArray = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
            String[] rArray = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
            String rNumber = "";
            for(int i=0; i<aArray.length; i++){
                while(aNumber >= aArray[i]){
                    rNumber += rArray[i];
                    aNumber -= aArray[i];
                }
            }
            return rNumber;
        }
    }

追问

谢谢你的回答,可是在eclipse里不能运行啊

追答

Run As

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-27
System.out.print(你输出的值或变量);
第2个回答  2013-11-26

java 1-999之内的阿拉伯数字变罗马数字!
} \/\/ 阿拉伯数字转罗马数字:\/\/ 把所有小数字在前的组合也作为基本数字,再做一个对应的数值表就可以解决问题了。\/\/ I、V、X、 L、 C、 D、 M \/\/ 1.5、10、50、100、500、1000 private static String toRome(int aNumber){ if(aNumber < 1 || aNumber > 3999){ retur...

...运行后输入一个罗马数字,即可输出阿拉伯数字
{ int len,SUM1;int sum;char s[1101];while(scanf("%s",s)!=EOF){ sum = SUM1 = 0;len = strlen(s);for(int i =0;i<len;i++){ SUM1=did(s[i]);sum += SUM1;} printf("%d\\n",sum);} return 0;} 大概是这样的吧,你自己再改下,我忘了~~...

在java中为什么输出结果是数字但是还要.tostring,toString是什么意思...
默认是:System.out.println(a.toString);其实没啥别的意思就是显示的时候是字符串类型。

求的值,其中a是一个数字,如2+22+222+2222+22222(此时a=2,n=5),a和...
\/\/求的值,其中a是一个数字\/\/如2+22+222+2222+22222(此时a=2,n=5),a和n均由键盘输入。#include <stdio.h>void main(){ int a,n,i=2,b,result=0; printf("请输入a的值:\\na="); scanf("%d",&a); printf("请输入n的值:\\nn="); scanf("%d",&n); b=a; if (n==1) { result=a...

XIV罗马数字是多少?
罗马数字 14的意思。 【例句】 Next day, Louis XIV was in the best of humours 第二天,路易十四心情好得不得了。 It has always been so, my dear Morrel, since the reign of Louis XIV. 任何时代都是这样的,我亲爱的莫雷尔,从路易十四那个时代就开始这样了。 Products and packaging shall not ...

正则表达式的符号
中括号内的“P”表示Unicode 字符集七个字符属性之一:标点字符。其他六个属性:L:字母;M:标记符号(一般不会单独出现);Z:分隔符(比如空格、换行等);S:符号(比如数学符号、货币符号等);N:数字(比如阿拉伯数字、罗马数字等);C:其他字符。*注:此语法部分语言不支持,例:javascript。 < >匹配词(word)的开始(<)...

求解用java语言 编写一个身份证的类,可以用来验证身份证的长度,并可...
public static void main(String[] args){ Scanner input = new Scanner(System.in);System.out.println("请输入十八位身份证号码!");String id=input.next();if(id.length()!=18){ System.out.println("身份证号码长度不对!");} String top=id.substring(0, 17);String sishu="7,9,...

我想学好十六进制。有人愿意简单给我说一下吗?我想学编程必须经过的道路...
假设有一个十六进数 2AF5 直接计算就是:5×160+F×161+A×162+2×163=10997[1]也可以用竖式表示:第0位: 5×160=5 第1位: F×16^1=240 第2位: A×162=2560 第3位: 2×163=8192 --- 10997 此处可以看出,所有进制换算成10进制,关键在于各自的权值不同。假设有人问你,十进数...

在Office Excel怎么样在数字中间加一个字母
A1 1234562 =MID(A1,1,3)&"A"&MID(A1,4,6) 结果:123A456 hjyxxjld | 发布于2015-11-02 举报| 评论 0 0 不晓得你的数字的数据类型是数值还是文本,不同的类型处理方法不一样 rushuiqiuyue | 发布于2012-04-07 举报| 评论 0 0 如果数字个数一样 添加的位置一样 这样可以=mid(A2,1,...

相似回答