当前位置: 首页 > 面试题库 >

如何找到与整数等效的罗马数字

张绍晖
2023-03-14
问题内容

如何找到与整数等效的罗马数字。是否有提供此功能的Java库?


问题答案:

这是许多语言(包括Java )的链接。这是相关的摘录:

public class RN {

    enum Numeral {
        I(1), IV(4), V(5), IX(9), X(10), XL(40), L(50), XC(90), C(100), CD(400), D(500), CM(900), M(1000);
        int weight;

        Numeral(int weight) {
            this.weight = weight;
        }
    };

    public static String roman(long n) {

        if( n <= 0) {
            throw new IllegalArgumentException();
        }

        StringBuilder buf = new StringBuilder();

        final Numeral[] values = Numeral.values();
        for (int i = values.length - 1; i >= 0; i--) {
            while (n >= values[i].weight) {
                buf.append(values[i]);
                n -= values[i].weight;
            }
        }
        return buf.toString();
    }

    public static void test(long n) {
        System.out.println(n + " = " + roman(n));
    }

    public static void main(String[] args) {
        test(1999);
        test(25);
        test(944);
        test(0);
    }

}


 类似资料:
  • 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 100

  • 罗马数字包含以下七种字符:I,V,X,L,C,D和M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,

  • 问题内容: 我需要使用一种方法将整数转换为罗马数字。后来,我必须使用该程序以罗马数字写出1到3999,这样就可以进行硬编码了。我下面的代码非常简单;它是一个基本的I / O循环,可以在使用getIntegerFromUser我们在课堂上制作的程序包时退出。 当我调用该方法时,是否可以将值赋给字符串,然后将它们添加在一起? 更新:我从教授那里得到了一些伪代码来帮助我,而在我理解他要说的内容的同时,我

  • 问题内容: 这是user2486所说的之后的当前代码。 我在使用ns时遇到此错误:UnboundLocalError:分配前引用了本地变量’ns’ 问题答案: 考虑一下此附加的伪代码和提示(其中一些是有效的Python,一些不是有效的,但有注释)。

  • 我正在尝试将罗马数字转换为阿拉伯数字。我取一个字符串并运行一个循环来检查每个字符的值。所以'M'将返回1000等。在罗马数字中,如果一个数字小于下一个,那么您需要减去它。所以'XL'或'10 50'将是40。这就是为什么我在for循环中有一个if语句,我在其中检查下一个字符并返回其值。稍后我将进行算术运算,但现在我只是尝试返回值。 我的问题是,它总是返回最后一个字符值两次。不管我输入2个字符还是1