elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [SRC] decimalToRomano
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: [SRC] decimalToRomano  (Leído 7,625 veces)
Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
[SRC] decimalToRomano
« en: 22 Noviembre 2011, 20:05 pm »

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

Código
  1. import java.util.*;
  2.  
  3. public class Hello {
  4. public static String repeatString(String sText, int iTimes){
  5. return new String(new char[iTimes]).replace("\0", sText);
  6. }
  7.  
  8. public static String decimalToRomano(int iNum) {
  9. int iTmp= 0, i= 1;
  10. String sRet= "";
  11.  
  12. String [] [] sRDigit =
  13. {
  14. {"I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
  15. {"X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
  16. {"C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}
  17. };
  18.  
  19. if (iNum > 0){
  20. for (int x=0; x<3; x++){
  21. iTmp=iNum % (i * 10);
  22.  
  23. if (iTmp != 0)
  24. sRet= sRDigit[x][(iTmp / i) -1] + sRet;
  25.  
  26. iNum -= iTmp;
  27.  
  28. if (iNum == 0)
  29. return sRet;
  30.  
  31. i *= 10;
  32. };
  33.  
  34. sRet= repeatString("M", iNum / 1000) + sRet;
  35. };
  36.  
  37. return sRet;
  38. }
  39.  
  40. public static void main (String args[]) {
  41. System.out.println("Dame un numero mayor que cero para convertirlo a un numero romano:");
  42.  
  43. int iMyNum = new Scanner(System.in).nextInt();
  44. System.out.println("El numero "+ iMyNum + " en romano es: " + decimalToRomano(iMyNum));
  45. }
  46. }

DoEvents! :P


« Última modificación: 26 Noviembre 2011, 21:32 pm por Delerice » En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #1 en: 22 Noviembre 2011, 20:20 pm »

Me gusta este código muy bueno.


En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #2 en: 22 Noviembre 2011, 20:30 pm »

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  
En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #3 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í.

En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #4 en: 22 Noviembre 2011, 20:39 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.
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #5 en: 22 Noviembre 2011, 20:40 pm »

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

En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #6 en: 22 Noviembre 2011, 20:42 pm »

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
En línea

тαптяα


Desconectado Desconectado

Mensajes: 1.151


Sic utere tuo ut alienum non laeda


Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #7 en: 22 Noviembre 2011, 20:43 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.
En línea

madpitbull_99
Colaborador
***
Desconectado Desconectado

Mensajes: 1.911



Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #8 en: 22 Noviembre 2011, 20:55 pm »

@тαптяαпсє:

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
  1. System.out.print("Introduce un número: ");
  2. int num = Integer.parseInt(in.readLine());
  3.  

Aunque hacerlo con scanner es más corto.

En línea



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

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

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [SRC] decimalToRomano
« Respuesta #9 en: 22 Noviembre 2011, 21:08 pm »

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
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines