java

Determinar si es número narcisista en Java

Introducción

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 JavaNúmero narcisista en 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í:

private static boolean esNarcisista(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 entero
        int 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 suma
    if(suma == numero){
        return true;
    }else{
        return false;
    }
}

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í:

class Narcisista{
    public static void main(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));
        }
    }

    private static boolean esNarcisista(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 entero
            int 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 suma
        if(suma == numero){
            return true;
        }else{
            return false;
        }
    }
}

Cuando lo compilamos y ejecutamos este es el resultado:

Llamada a la función en Java

Estoy aquí para ayudarte 🤝💻


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.
parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

Ver comentarios

Entradas recientes

Resetear GOOJPRT PT-210 MTP-II (Impresora térmica)

El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…

1 mes hace

Proxy Android para impresora térmica ESC POS

Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…

1 mes hace

Android – Servidor web con servicio en segundo plano

En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…

1 mes hace

Cancelar trabajo de impresión con C++

En este post te quiero compartir un código de C++ para listar y cancelar trabajos…

2 meses hace

Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…

3 meses hace

Imprimir PDF con Ghostscript en Windows de manera programada

Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…

3 meses hace