Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 把数字转换成罗马数字_Java_Netbeans_Methods - Fatal编程技术网

Java 把数字转换成罗马数字

Java 把数字转换成罗马数字,java,netbeans,methods,Java,Netbeans,Methods,我正在使用的转换算法有一些问题。 这是一个很好的方法,除非我输入一个整数,比如100,200,300,NNN。。。 有什么线索吗 方法代码: public static String decimalToRomano(int decimal) { int x = 0; int cent, dece, unid; cent = x / 100; x = decimal % 100; dece = x / 10;

我正在使用的转换算法有一些问题。 这是一个很好的方法,除非我输入一个整数,比如100,200,300,NNN。。。 有什么线索吗

方法代码:

 public static String decimalToRomano(int decimal) {
        int x = 0;
        int cent, dece, unid;
        cent = x / 100;
        x = decimal % 100;
        dece = x / 10;
        unid = decimal % 10;
        String romano = "";
        switch (cent) {
            case 1:
                romano = romano + "C";
                break;
            case 2:
                romano = romano + "CC";
                break;
            case 3:
                romano = romano + "CCC";
                break;
            case 4:
                romano = romano + "CCCC";
                break;
            case 5:
                romano = romano + "D";
                break;
            case 6:
                romano = romano + "DC";
                break;
            case 7:
                romano = romano + "DCC";
                break;
            case 8:
                romano = romano + "DCCC";
                break;
            case 9:
                romano = romano + "DCCCC";
                break;
        }
            switch (dece) {
            case 1:
                romano = romano + "X";
                break;
            case 2:
                romano = romano + "XX";
                break;
            case 3:
                romano = romano + "XXX";
                break;
            case 4:
                romano = romano + "XXXX";
                break;
            case 5:
                romano = romano + "L";
                break;
            case 6:
                romano = romano + "LX";
                break;
            case 7:
                romano = romano + "LXX";
                break;
            case 8:
                romano = romano + "LXXX";
                break;
            case 9:
                romano = romano + "LXXXX";
                break;
        }
        switch (unid) {
            case 1:
                romano = romano + "I";
                break;
            case 2:
                romano = romano + "II";
                break;
            case 3:
                romano = romano + "III";
                break;
            case 4:
                romano = romano + "IIII";
                break;
            case 5:
                romano = romano + "V";
                break;
            case 6:
                romano = romano + "VI";
                break;
            case 7:
                romano = romano + "VII";
                break;
            case 8:
                romano = romano + "VIII";
                break;
            case 9:
                romano = romano + "VIIII";
                break;
        }
        return romano;
    } 

x
==0
)除以
100
10
,得到
分和
体面的

您可能需要将
十进制
除法

另外,我将为您的
开关提供一个
0
案例

您应该更改:

cent = x / 100;

1) 您的
开关(cent){
不进行任何开关,因为:

int x = 0;
cent = x / 100;
x==0
所以总是
cent==0


2)
x=decimal%100;
unid=decimal%10;
可以返回0,并且没有
大小写(0)

你试过使用调试器吗?是的,它没有用,我应该删除它,当我提示用户输入数字时,我有一个方法将数字限制在一个范围内,我使用它从1到999,所以你是对的,这部分代码没有用
int x = 0;
cent = x / 100;
public static String toRoman(int value) {
    String[] singles = new String[] { "", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" };
    String[] tens = new String[] { "", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };
    String[] hundreds = new String[] { "", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM" };
    String[] thousands = new String[] { "", "M", "MM", "MMM" };

    return thousands[value / 1000] + hundreds[value % 1000 / 100] + tens[value % 100 / 10] + singles[value % 10];
}