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.
La explicación del algoritmo así como otras cosas relacionadas al mismo ya las he explicado en este post.
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.
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:
El día de hoy te mostraré cómo crear un servidor HTTP (servidor web) en Android…
En este post te voy a enseñar a designar una carpeta para imprimir todos los…
En este artículo te voy a enseñar la guía para imprimir en una impresora térmica…
Hoy te voy a mostrar un ejemplo de programación para agregar un módulo de tasa…
Los usuarios del plugin para impresoras térmicas pueden contratar licencias, y en ocasiones me han…
Hoy voy a enseñarte cómo imprimir el € en una impresora térmica. Vamos a ver…
Esta web usa cookies.
Ver comentarios