如何让我的代码将罗马数字转换为数字?

时间:2015-10-28 12:44:18

标签: java roman-numerals

public static void main(String[] args) {
    Scanner userInput = new Scanner(System.in);
    int number = promptUserForNumber(userInput);
    String romanNum = convertNumberToNumeral(number);
    System.out.println("The number " + number + " is the Roman " + "numeral " + romanNum);

}

private static int promptUserForNumber(Scanner inScanner) {
    System.out.print("Please enter a number between 1 and 3999 "
            + "(0 to quit): ");
    int number = inScanner.nextInt();
    if (number == 0){
        System.out.println("Goodbye!");
         System.exit(0);
            }                                            
    while (number < 0 || number > 3999){
        System.out.print("Error! Please enter a number "  + "between 1 and 3999 (0 to quit): ");
            number = inScanner.nextInt();
            if (number == 0){                   
            }

    }
    return number;
 }

private static String convertNumberToNumeral(int number) {
    int ones = 0, tens = 0, hunds = 0, thous = 0; 
    String romanOne = "",romanTen = "", romanHunds = "", romanThous = "";
     while(number >= 1000) {
            number -= 1000;
            thous++;
        }

        while(number >= 100) {
            number -= 100;
            hunds++;
        }

        while(number >= 10) {
            number -= 10;
            tens++;
        }

        while(number >= 1) {
            number--;
            ones++;
        }



        while(thous > 0) {
            romanThous += "M";
            thous--;
        }

       if (hunds > 0) {
             if (hunds < 4)
                 while (hunds > 0){
                     romanHunds += "C";
                     hunds--;
                 }
            else if (hunds == 4){
                 romanHunds += "CD";
             }
            else if (hunds == 5){
                 romanHunds += "D";
             }
            else if (hunds == 6 ){
                 romanHunds += "DC";   
             }
                 else if (hunds ==7 ){
                 romanHunds += "DCC";   
             }
             else if (hunds == 8 ){
                 romanHunds += "DCCC";   
             }
             else if (hunds == 9){
                 romanHunds += "CM";
             }
        }

       if (tens > 0) {
           if (tens < 4){
               while (tens > 0){
                   romanTen += "X";
                   tens--;
               }
           }
           else if (tens == 4){
               romanTen += "XL";
           }
           else if (tens == 5){
               romanTen +=  "L";
               }
           else if (tens ==6){
               romanTen += "LX";
           }
            else if (tens ==7){
               romanTen += "LXX";
           }
            else if (tens ==8){
               romanTen += "LXXX";
           }
            else if (tens ==9){
               romanTen += "XC";
           }

           }


        if(ones > 0) {
            if(ones < 4) {
                while(ones > 0) {
                    romanOne += "I";
                    ones--;
                }
            }
            else if(ones == 4) {
                romanOne += "IV";
            } 
            else if(ones == 5) {
                romanOne += "V";
            }
            else if(ones == 6) {
                romanOne += "VI";                
            }
            else if (ones == 7){
                romanOne += "VII";
            }
            else if (ones ==8){
                romanOne += "VIII";
            }

            else {
                romanOne = "IX";
            }
        }

        return romanThous + romanHunds + romanTen + romanOne;
}



{

    } 

}

//这段代码确实编号为罗马数字,但我认为有一种方法可以将我已经拥有的编码转换为罗马数字到数字。我不知道我会怎么做。我想我必须在我的方法convertNumberToNumeral中改变一些东西。我不知道怎么做。

0 个答案:

没有答案