Конвертация римских в арабские и обратно

Пишу калькулятор. Арабские и римские. Арабскими считает верно. Римские просто пишет рядом, не выполняя операцию. Где косячу?

    public class Parser {

static String[] OPERATORS = {"+", "-", "*", "/"};
static String[] ARABIC = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10"};
static String[] ROMAN = {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"};

public Parser() {
}

private int getOperatorIndex(String input) {
    int retval = -1;
    for (String operator : OPERATORS) {
        if (input.contains(operator)) {
            retval = input.indexOf(operator);
            break;
        }
    }
    return retval;
}

private boolean checkForArabic(String input) {
    boolean retval = false;
    for (String s : ARABIC) {
        if (input.equals(s)) {
            retval = true;
            break;
        }
    }
    return retval;
}

public boolean checkForRoman(String input) {
    boolean retval = false;
    for (String s : ROMAN) {
        if (input.equals(s)) {
            retval = true;
            break;
        }
    }
    return retval;
}


public void parse(String input) {
    Calculator cal = new Calculator();
    int indexOfOperator = getOperatorIndex(input);
    if (indexOfOperator != -1) {
        String a = input.substring(0, indexOfOperator);
        String b = input.substring(indexOfOperator + 1);
        String op = input.substring(indexOfOperator, indexOfOperator + 1);
        if (checkForArabic(a.trim()) && checkForArabic(b.trim())) {
            int aIn = Integer.parseInt(a.trim());
            int bIn = Integer.parseInt(b.trim());
            int result = cal.calculate(aIn, bIn, op);
            System.out.println("Output " + result);
        } else if (checkForRoman(a.trim()) && checkForRoman(b.trim())) {


            System.out.println("Output" + a + b);


        }
        else {
            throw new ArithmeticException("one of the characters is not arabic or roman!");
        }


    } else {
        throw new ArithmeticException("No operator!");
    }


}


public static void main(String[] args) {


}}

    

Ответы (2 шт):

Автор решения: Igor

"Косячите"? А где, собственно, здесь перевод строк с римскими цифрами в числа?

    } else if (checkForRoman(a.trim()) && checkForRoman(b.trim())) {


        System.out.println("Output" + a + b);


    }
→ Ссылка
Автор решения: fox
  1. создать метод перевода римских цифр к арабским. (X--> 10).
  2. вычленить из искомого выр-я (пр. "XV + II") римские цифры и воспользоваться п.1.
  3. создать метод вычислений. (15 + 2).
  4. создать метод конкатенации ответов (пр. 17 --> XVII).
  5. и вуаля!!!)))
→ Ссылка