【问题标题】:Compare string backwards向后比较字符串
【发布时间】:2016-09-23 03:38:42
【问题描述】:

我正在做一个从 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();
    }

}

【问题讨论】:

  • 作为一个广泛的建议,您需要修改您的程序,以考虑到一个字母的含义可能取决于它后面的那个(假设有一个)。
  • 你的程序还能编译吗?

标签: java roman-numerals


【解决方案1】:

有人已经为此编写了一个漂亮的解决方案。这可能会帮助你。看一看。 https://stackoverflow.com/a/9073310/1388715

【讨论】:

    猜你喜欢
    • 2016-09-15
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    相关资源
    最近更新 更多