Algarismo Arábico para Algarismo Romano

2 respostas
A

Fiz essa pequena classe ArabicoToRomano.. há principio está respondendo..

Classe Teste
/**
 *
 * @author Andy11x
 */
public class Teste {
    
    public static void main(String[] args) {
        //A entrada deve estar na escala de 1 - 4999
        int[] arabico = {1, 3, 7, 67, 588, 1359, 2779, 3879, 4999};
        for(int n : arabico){
            System.out.println(new ArabicoToRomano(n));                        
        }
    }
}
Classe ArabicoToRomano
/**
 *
 * @author Andy11x
 */
public class ArabicoToRomano {
    
    private int numeroArabico;
    
    public ArabicoToRomano() {
        
    }
    
    public ArabicoToRomano(int numeroArabico) {        
        this.numeroArabico = numeroArabico;        
    }    
    
    private String convertM() {        
        return "MMMM".substring(0, (int)(numeroArabico / 1000));
    } 
    
    private String convertD() {
        int n = digito(1000, 100);
        return n == 9 ? "CM" :
               n > 4 ? "DCCC".substring(0, n - 4) :
               n == 4 ? "CD" : "CCC".substring(0, n);
    }
    
    private String convertX() {
        int n = digito(100, 10);
        return n == 9 ? "XC" :
               n > 4 ? "LXXX".substring(0, n - 4) :
               n == 4 ? "XL" : "XXX".substring(0, n);
    }  
    
    private String convertI() {
        int n = digito(10, 1);
        return n == 9 ? "IX" :
               n > 4 ? "VIII".substring(0, n - 4) :
               n == 4 ? "IV" : "III".substring(0, n);
    }  
    
    private int digito(int divA, int divB) {        
        return (int)((numeroArabico % divA) / divB);
    }  
    
    public void setNumeroArabico(int numeroArabico) {
        this.numeroArabico = numeroArabico;
    }  
    
    @Override
    public String toString() {
        return new StringBuilder()
                .append(convertM())
                .append(convertD())
                .append(convertX())
                .append(convertI()).toString(); 
    } 
}
Gostaria da avaliação de vcs sobre essa classe.. até..

2 Respostas

J

É uma coisa bem útil, ficou jóia, e, ao meu ver, a única coisa que recomendaria e mesmo assim sendo minha opinião é transformar essa classe num singleton para evitar a construção indevida de vários objetos desnecessários. Seu programa vai ganhar desempenho evitando construir vários objetos que vão servir para a mesma coisa.

Rafael_Guerreiro

Sugiro, ainda, usar jUnit para fazer os testes automatizados.

É mais fácil que ficar verificando manualmente se os valores estão corretos.

Criado 10 de maio de 2014
Ultima resposta 12 de mai. de 2014
Respostas 2
Participantes 3