Veamos la solución al ejercicio para implementar el algoritmo que determine si un número entero es narcisista utilizando el lenguaje de programación Java.
Número narcisista en Java
La explicación del algoritmo así como otras cosas relacionadas al mismo ya las he explicado en este post.
Número narcisista en Java
Para reutilizar el código, separar la lógica y seguir buenas prácticas de programación ponemos todo el procedimiento en una función que recibe un número entero (del cual comprobaremos si es o no narcisista) y devuelve un booleano indicando lo anterior.
La función queda así:
privatestaticbooleanesNarcisista(int numero){String numeroComoCadena =Integer.toString(numero);int longitudDeNumero = numeroComoCadena.length();double suma =0;for(int indice =0; indice < longitudDeNumero; indice++){// Convertir carácter a enteroint cifra =Character.getNumericValue(numeroComoCadena.charAt(indice));/*
Elevarlo al exponente dado por la longitud del número
*/double elevado =Math.pow(cifra, longitudDeNumero);// Vamos sumando el resultado
suma = suma + elevado;}// Finalmente comprobamos si el número es igual a la sumaif(suma == numero){returntrue;}else{returnfalse;}}
Notamos que para convertir un carácter a un entero utilizamos Character.getNumericValue.
Para elevar un número a una potencia llamamos a Math.pow y finalmente (aunque eso pasa primero) usamos Integer.toString para convertir un entero a una cadena.
Ejemplo de uso del código
Por si no sabemos cómo llamar a la función he escrito este código que llama a la función por cada elemento que hay en un arreglo.
El código de ejemplo completo queda así:
classNarcisista{publicstaticvoidmain(String[] argumentos){int numeros[]={1,2,3,4,153,28,11,96,407,1634,54748};for(int numero: numeros){System.out.println(numero +" es narcisista?"+esNarcisista(numero));}}privatestaticbooleanesNarcisista(int numero){String numeroComoCadena =Integer.toString(numero);int longitudDeNumero = numeroComoCadena.length();double suma =0;for(int indice =0; indice < longitudDeNumero; indice++){// Convertir carácter a enteroint cifra =Character.getNumericValue(numeroComoCadena.charAt(indice));/*
Elevarlo al exponente dado por la longitud del número
*/double elevado =Math.pow(cifra, longitudDeNumero);// Vamos sumando el resultado
suma = suma + elevado;}// Finalmente comprobamos si el número es igual a la sumaif(suma == numero){returntrue;}else{returnfalse;}}}
Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto
No te pierdas ninguno de mis posts
Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.
Introducción Un número narcisista es aquel que es igual a la suma de cada uno de sus dígitos elevados a la "n" potencia (donde "n" es el número de cifras del número). La metáfora de su nombre alude a lo mucho que parecen "quererse a sí mismos" estas cifras. Por ejemplo, el 153 es…
Introducción Ya he implementado este algoritmo en otros lenguajes de programación (los más populares creo yo). Llegó el turno de PHP. Veamos una función para determinar si un número es narcisista. Si no sabes qué es un número narcisista, lee: Algoritmo para número narcisista en múltiples lenguajes de programación. Función:…
Introducción Comenzaremos resolviendo el algoritmo para determinar si un número es narcisista en CPP o C++. Escribiremos una función que recibe un entero y regresa un booleano indicando si el número recibido es narcisista. Nota: si quieres saber qué es un número narcisista, así como el algoritmo para determinarlo…
En "Algoritmos"
1 comentario en “Determinar si es número narcisista en Java”
Pingback: Solución a algoritmo para determinar número narcisista en muchos lenguajes - Parzibyte's blog