Código de Java - Convertir a números romanos

Imágen de perfil

Convertir a números romanosgráfica de visualizaciones


Java

Publicado el 24 de Mayo del 2017 por Administrador
4.623 visualizaciones desde el 24 de Mayo del 2017. Una media de 98 por semana
Este código muestra como convertir cualquier numero inferior a 10.000 a su valor en números romanos.

Se divide en notación desarrollada en sus respectivos órdenes (unidades, decenas, centenas y millares) y se obtiene su respectivo valor en romano, remplazando cada orden

Requerimientos

Netbeans

Versión 1.0

Actualizado el 29 de Julio del 2017 (Publicado el 24 de Mayo del 2017)gráfica de visualizaciones de la versión: Versión 1.0
4.624 visualizaciones desde el 24 de Mayo del 2017. Una media de 98 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella


Forma parte de EDDYBEYOND
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import java.util.Scanner;
/**
 * 
 * @author EDDYBEYOND
 *
 */
public class NumerosRomanos {
   static final String INSTRUCCIONES = "Introduzca un decimal menor a 9999 o un número romano válido:";
   static final String ERROR = "El numero introducido es incorrecto";
   public static int millares = 0, centenas = 0, decenas = 0, unidades = 0;
   public static String [][] romanos={{"","I","II","III","IV","V","VI","VII","VIII","IX"},
         {"","X","XX","XXX","XL","L","LX","LXX","LXX","XC"},
         {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},
         {"","M","MM","MMM","Mv","v","vM","vMM","vMMM","Mx"}};
   private static Scanner scan;
 
   public static void main(String[] args) {
      System.out.println(INSTRUCCIONES);
      scan = new Scanner(System.in);
      String numero = scan.nextLine();
      NumerosRomanos.convertir(numero);
   }
 
   private static void convertir(String numero) {
      try{ //intenta convertir arabigo a romano
         NumerosRomanos.obtenerNotDesarrollada(Integer.valueOf(numero));
         System.out.println(NumerosRomanos.obtenerRomano());
      }catch (NumberFormatException e){
         try{ //intenta convertir romano a arabigo
            System.out.println(NumerosRomanos.obtenerArabigo(numero.trim()));
         }
         catch(Exception e1){
            System.out.println(ERROR);
         }
      }
      catch(Exception e){
         System.out.println(ERROR);
      }
 
   }
 
   public static void obtenerNotDesarrollada(int numero) {
      millares = (int)numero / 1000;
      centenas = (int)numero % 1000 / 100;
      decenas = (int)numero % 1000 % 100 / 10;
      unidades = (int)numero % 1000 % 100 % 10;
   }
 
   public static String obtenerRomano(){
      return romanos[3][millares]+""+
            romanos[2][centenas]+""+
            romanos[1][decenas]+""+
            romanos[0][unidades]+"";
   }
 
   private static String obtenerArabigo(String numero) {
      int size = numero.length();
      String arabigo = "";
      for (int i = 3; i>-1; i--){
         for(int j = size; j>-1; j--){
            int valor = -1;
            valor = escanear(numero.substring(0,j),i);
            if (valor > -1){
               arabigo = arabigo + valor;
               numero = numero.substring(j,size);
               size = numero.length();
               break;
            }
         }
      }
      return arabigo;
   }
 
   private static int escanear(String cadena, int orden) {
      for (int j = 9; j>-1; j-- ){
         if(romanos[orden][j].equals(cadena)){
            return j;
         }
      }
      return -1;
   }
 
}



Comentarios sobre la versión: Versión 1.0 (0)


No hay comentarios
 

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s4003