[SRC] decimalToRomano

Iniciado por Psyke1, 22 Noviembre 2011, 20:05 PM

0 Miembros y 1 Visitante están viendo este tema.

Psyke1

Llevo muy poco en java, avisadme si veis algún error o algo mejorable, a ver que os parece:

Código (java) [Seleccionar]
import java.util.*;

public class Hello {
public static String repeatString(String sText, int iTimes){
return new String(new char[iTimes]).replace("\0", sText);
}

public static String decimalToRomano(int iNum) {
int iTmp= 0, i= 1;
String sRet= "";

String [] [] sRDigit =
{
{"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
{"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
{"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}
};

if (iNum > 0){
for (int x=0; x<3; x++){
iTmp=iNum % (i * 10);

if (iTmp != 0)
sRet= sRDigit[x][(iTmp / i) -1] + sRet;

iNum -= iTmp;

if (iNum == 0)
return sRet;

i *= 10;
};

sRet= repeatString("M", iNum / 1000) + sRet;
};

return sRet;
}
   
public static void main (String args[]) {
System.out.println("Dame un numero mayor que cero para convertirlo a un numero romano:");
   
int iMyNum = new Scanner(System.in).nextInt();
System.out.println("El numero "+ iMyNum + " en romano es: " + decimalToRomano(iMyNum));
}
}


DoEvents! :P

тαптяα

Me gusta este código muy bueno.

RyogiShiki

Hola. Bueno, el código está muy bien, no le he visto errores hasta el momento. Pero algo que he notado, y claro está es tu estilo de programación, es solo una sugerencia. Y es que generalmente en Java no es muy común, y las recomendaciones sobre el lenguaje que hacen libros como por ejemplo Clean Code es evitar el uso de la notación húngara. Y usar CameCase con nombre extremadamente descriptivos, un buen ejemplo de esto son las APIs de Java. Como ves éste tipo de cosas van muy ligadas a la plataforma se que vienes de programar un montón de tiempo en sobre Windows con las APIs de este, y en ellas es muy común el uso de la notación Húngara. Bueno en Java eso no es muy popular. Claro que mis palabras no sean tomadas como una norma ni nada por el estilo, solo es una sugerencia amigable y los aspectos de estilo en la programación con Java. Un consejo nada más.

Y bueno al final de los bloques if o for o cualquiera no es necesario poner el punto y coma, no se si lo haces por gusto o constumbre, pero solo por si acaso lo comento.

Una última sugerencia es que para leer datos tal vez te resulte más útil (en ocasiones futuras y si se hace un uso más intensivo de la lectura por teclado) el uso de BufferedReader.

Saludos  


тαптяα

Yo idento el código de la misma manera que él. Y me han enseñado que se identa así.


RyogiShiki

Cita de: тαптяαпсє en 22 Noviembre 2011, 20:37 PM
Yo idento el código de la misma manera que él. Y me han enseñado que se identa así.

Yo no hablo de la identación, si no de la forma de nombrar las variables. después esto va a ser muy importante al programar métodos accesores y ligarlos a sus respectivos atributos.


Psyke1

Lo de la notación húngara es una costumbre que tomé con vb6, como tú bien dices, por lo poquísimo que he visto en Java no se usa, pero a mí me resulta muy útil a veces, sobretodo si tengo muchas variables. :)

Sé que podía omitir ese punto y coma, pero así me parecía que quedaba un poco más claro, ¿no crees? :P

¿BufferReader?
No lo he usado hasta ahora, voy a probar. Gracias. ;)

DoEvents! :P


RyogiShiki

Bien, igual como dije es solo una sugerencia, y como dices no se suele ver eso en código Java. Y lo del punto y coma pues no lo había pensado de esa manera.

Otra cosa puede ser un typo, pero aclara por si las dudas es BufferedReader.

Saludos


тαптяα

Cita de: RyogiShiki en 22 Noviembre 2011, 20:39 PM
Yo no hablo de la identación, si no de la forma de nombrar las variables. después esto va a ser muy importante al programar métodos accesores y ligarlos a sus respectivos atributos.
Cierto, los nombres de las variables no son del todo descriptivos.

madpitbull_99

@тαптяαпсє:

Sólo con ver iTmp sabrás que se trata de un integer, o al ver sRet sabrás que es un string, es cierto que en Java no se usa, pero puede
resultar bastante útil.

@Delerice:

Lo que dice RyogiShiki, es usar Buffers, por ejemplo:

Código (java) [Seleccionar]

BufferedReader in = new BufferedReader(new InputStreamReader(System.in);
System.out.print("Introduce un número: ");
int num = Integer.parseInt(in.readLine());


Aunque hacerlo con scanner es más corto.




«Si quieres la paz prepárate para la guerra» Flavius Vegetius


[Taller]Instalación/Configuración y Teoría de Servicios en Red

Psyke1

Ya veo...
¿Alguna ventaja en especial de una clase sobre otra? :huh:

Me veréis mucho por aquí, ahora que empecé con Java. :)
Yuju!

DoEvents! :P