如何使代码反向运行?从罗马数到十进制数

时间:2014-11-02 19:11:47

标签: java methods while-loop

我已经编写了一个从十进制数转换为罗马数的代码,但是,我希望它以相反的方式进行,那么我怎样才能使它成为可能呢? (这是我之前的代码:http://pastebin.com/QFKi0xJh)谢谢!这是我现在的代码。 我只是一个初学者,所以我的代码看起来有点基础,请为此道歉。

public static void main(String[] args) {
    // Fill in the body
    Scanner in= new Scanner(System.in);
    String user = promptUserForNumeral(in);
    while (user.length()!=0) {
        int numb= convertNumeralToNumber(user);
        System.out.println("The numeral "+user+ " is the decimal number "+numb);
        user = promptUserForNumeral(in);
    }
}


private static String promptUserForNumeral(Scanner inScanner) {
    // Fill in the body
    System.out.println("Enter a roman numeral (Q to quit): ");
    String i = inScanner.nextLine();
    while (i.length()>=0) {
        if (i.length()==0) {
            System.out.println("ERROR! You must enter a non-empty line!");
            System.out.println("Enter a roman numeral (Q to quit): ");
            i = inScanner.nextLine();
        }
        else if ( i.length()==1 && i.charAt(0)=='q' || i.charAt(0)=='Q') {
            System.out.println("Goodbye!");
            System.exit(0);
        }
    }
    return i;
}


private static int convertNumeralToNumber(String numeral) {
    // Fill in the body
    int n=0;
    if (numeral.equalsIgnoreCase("m")) {            
        n-=1000;
    }
    else if (numeral.equalsIgnoreCase("d")) {
        n=500;  
    }
    else if (numeral.equalsIgnoreCase("c")) {
        n=100;
    }
    else if (numeral.equalsIgnoreCase("l")) {
        n=50;
    }
    else if (numeral.equalsIgnoreCase("x")) {
        n=10;
    }
    else if (numeral.equalsIgnoreCase("v")) {
        n=5;
    }
    else if (numeral.equalsIgnoreCase("i")) {
        n=1;
    }
    return n;

}

0 个答案:

没有答案