Сравнить строку назад

Я делаю преобразование римских цифр в десятичное от 1 до 999, я могу добавить значение к acumНапример, XV, я могу добавить 10+5=15, но не могу вычесть, как IV, 5-1=4, как я могу сравнить, если буква была раньше с более низким значением? Я пытался напечатать массив в обратном направлении, чтобы сравнить, но я не смог.

import java.util.*;

public class NumerosRomanos {
    private String numero;

    public NumerosRomanos(String numero){
        setNumero(numero);
    }
        public void setNumero(String numero){
            this.numero=numero;
        }
        public String getNumero(){
            return numero;
        }

        public String mayusculas(String numero){
            return numero.toUpperCase();
    }

    public String separar(){
        String mayusculas=mayusculas(numero);
        String[] resultado=mayusculas.split("",0);
        for(int i=0;i<resultado.length;i++){
            System.out.println(resultado[i]);
        }
        int acum=0;
        for(int i=0;i<resultado.length;i++){
        switch(resultado[i]){
        case "I": acum+=1;
        break;
        case "V": acum+=5;
        break;
        case "X": acum+=10;
        break;
        case "L": acum+=50;
        break;
        case "C": acum+=100;
        break;
        case "D": acum+=500;
        break;
        case "M": acum+=1000;
        break;
        default: System.out.println("Error");
        break;
        }
        }
        for(int contador2=resultado.length; contador2 > 0;contador2--){
            System.out.println(resultado[contador2]);
        }
        String ultimo= Integer.toString(acum);
        return ultimo;
    }




    public String toString(){
        return separar();
    }

}

1 ответ

Кто-то уже написал красивое решение для того же. это может помочь вам взглянуть. /questions/2443150/preobrazovanie-rimskih-tsifr-v-desyatichnyie/2443169#2443169

Другие вопросы по тегам