Domingo 22 de Diciembre de 2024, 23:43
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Java
(Moderador:
arielb
) »
Ejercicio En Eclipse
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ejercicio En Eclipse (Leído 1632 veces)
jesus.ct
Nuevo Miembro
Mensajes: 1
Ejercicio En Eclipse
«
en:
Viernes 4 de Enero de 2008, 23:18 »
0
necesito ayuda para resolver este ejercicio porque no paro de darle vueltas y estar probando y probando y no hay manera de que me salga lo que quiero si alguien sabe y podria ayudarme se lo agradeceria mucho.
Gracias
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Tweet
logicaemp
Miembro activo
Mensajes: 32
Re: Ejercicio En Eclipse
«
Respuesta #1 en:
Martes 8 de Enero de 2008, 03:35 »
0
El sistema de numeración Romano no es un sistema posicional como el Arábigo.
Como un glifo solo puede tener un valor sin importar su posición, podemos buscar y reemplazar.
Por ejemplo M siempre vale 1000. Al contrario del sistema arábigo donde 1 depende de la cantidad de 0's.
Lo único que hay que tener en cuenta es que un valor superior como "M" no puede aparecer despúes de "X".
Código: Text
import java.text.ParseException;
public class FromRoman {
public static final Integer[] divs = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
public static final String[] figs = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
public static void main(String[] args) throws ParseException {
String letter = args[0];
Integer number = 0;
int i = 0;
int j = 0;
while (i < letter.length()) {
if (i < letter.length() - 1) {
String twoletter = letter.substring(i, i + 2);
int twoindex = indexOf(j, twoletter);
if (twoindex != -1) {
number += divs[twoindex];
i = i + 2;
j = twoindex;
continue;
}
}
String oneletter = letter.substring(i, i + 1);
int oneindex = indexOf(j, oneletter);
if (oneindex != -1) {
number += divs[oneindex];
i++;
j = oneindex;
continue;
}
throw new ParseException(letter, i);
}
System.out.println(number);
}
public static int indexOf(int startIndex, String temp) {
for (int j = startIndex; j < figs.length; j++) {
if (temp.equals(figs[j])) {
return j;
}
}
return -1;
}
}
Código: Text
logicaemp@sparc4:~$ java FromRoman MCMLXXXVII
1987
logicaemp@sparc4:~$ java FromRoman MCMXLXXXVII
1977
logicaemp@sparc4:~$ java FromRoman CCC
300
logicaemp@sparc4:~$ java FromRoman MXXXXIXXI
Exception in thread "main" java.text.ParseException: MXXXXIXXI
at FromRoman.main(FromRoman.java:36)
logicaemp@sparc4:~$ java FromRoman MXXXXIXI
1050
Todavía hay que corregir la cantidad de "figs" que puede contener un valor.
Así como el ejemplo anterior donde IX (9) y después un I (1), evidentemente debería ser un error.
Espero que sea de ayuda.
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Java
(Moderador:
arielb
) »
Ejercicio En Eclipse