Título: Ayuda con Código Sencillo Publicado por: LaLakers94 en 9 Noviembre 2013, 18:16 pm Hola, estoy empezando con Java y he empezado con actividades muy sencillitas, al menos me lo parecen hasta que me doy cuenta de que no sé hacerlas. Las intento probar mediante consola y no funcionan, no sé en que puedo fallar. Si me pudiesen echar una mano, lo agradecería de corazón.
Son 2 actividades: 1) Un método calcularNumeroArmonico tal que, dado un número entero n, devuelva el sumatorio 1 + 1/2 + 1/3 + … + 1/n. Este es mi código: Código
2)Un método que, dado un número entero n, devuelva la suma de todos sus dígitos. Por ejemplo, 12345 devolvería 15. Este es mi código: Código
En el primero pruebo con n=3 y me devuelve 1.0 En el segundo, con 12345, me devuelve 255 :huh: :huh: ¿Qué error he cometido? Título: Re: Ayuda con Código Sencillo Publicado por: egyware en 9 Noviembre 2013, 19:09 pm El primero es que haces esto
Código Según nuestros conocimientos de matemática, el resultado debería ser 0.5. Sin embargo el resultado es 0. Pero dirán "es que estamos almacenando el numero en un entero" Y ES CIERTO entonces hacemos las modificaciones necesarias. Código
Sin embargo "numero" sigue siendo 0. Lo que sucede realmente es que el compilador ASUME que estás haciendo una división entera debido que el divisor es entero. Para evitar que esto ocurra el divisor debe ser float o doble (puedes hacer un cast a float/double o declarar divisor como float/doble.) Lo segundo NO TENGO IDEA PORQUE NO TE FUNCIONA, pero podrías intentar imprimir en pantalla que es lo que te devuelve "numero.charAt(i)" y luego Integer.valueOf(numero.charAt(i)) para confirmar si está haciendo lo que debe. Bueno Saludos! espero haberte ayudado. Título: Re: Ayuda con Código Sencillo Publicado por: LaLakers94 en 9 Noviembre 2013, 19:57 pm Hola, muchas gracias por las respuestas.
He podido solucionar el primero y en el segundo he mostrado por pantalla lo que comentas. Código
La línea 4 devuelve 2. (Parece que funciona). La línea 5 devuelve 50 (Ni idea de por qué). Como ''numero.charAt(i)'' devuelve el dígito correspondiente al índice i, he reorganizado el código eliminando el ''Integer.ValueOf()'' y me sigue dando mal, de hecho, es el mismo resultado erróneo (255). Título: Re: Ayuda con Código Sencillo Publicado por: Mitsu en 9 Noviembre 2013, 20:23 pm Hola. Al parecer, la conversión del char primitivo a int está devolviendo su valor ascii (creo).
Al parecer hay que utilizar el método de la clase Character getNumericValue, que devuelve el valor numérico (Integer) de ese número extraido en tipo char: Código O puedes primero transformar ese char a String y luego convertirlo a Int: Código El código quedaría de éste método quedaría así: Código
Título: Re: Ayuda con Código Sencillo Publicado por: LaLakers94 en 9 Noviembre 2013, 20:37 pm Muchísimas gracias a ambos, ahora entiendo. Ya había optado por hacer otro método que se me había ocurrido (Ir dividiendo el entero entre 10 sucesivamente e ir sumando los restos) pero aplicaré este para no olvidarlo.
Gracias de nuevo. Título: Re: Ayuda con Código Sencillo Publicado por: Mitsu en 9 Noviembre 2013, 21:00 pm Igual te dejo el code por si te sirve:
Código
Un saludo. PD: No uses los Wrapper de los primitivos si no es necesario. Puedes usarlos con Listas, o para utilizar metodos que estan en los Wrappers. Para lo sencillo, los primitivos van bien. |