Alguna forma de mejorar esta solucion?Armstrong
Publicado por Ivan (11 intervenciones) el 14/08/2019 22:37:28
Valora esta pregunta


0
public static void Armstrong() {
Scanner sc = new Scanner(System.in);
System.out.println("Introduce un número por pantalla: ");
String num = sc.nextLine();
//Descompongo el String en caracteres
char c1 = num.charAt(0);
char c2 = num.charAt(1);
char c3 = num.charAt(2);
//Paso a String cada caracter independiente
String s1 = Character.toString(c1);
String s2 = Character.toString(c2);
String s3 = Character.toString(c3);
//Paso a int cada String independiente
int i1 = Integer.parseInt(s1);
int i2 = Integer.parseInt(s2);
int i3 = Integer.parseInt(s3);
//Calculo la potencia de cada cifra
int r1 = (int) Math.pow(i1, 3);
int r2 = (int) Math.pow(i2, 3);
int r3 = (int) Math.pow(i3, 3);
//Sumo el resultado de las potencias
int rFinal = r1 + r2 + r3;
//Paso a string el resultado
String valorFinal = Integer.toString(rFinal);
if (valorFinal.equalsIgnoreCase(num)) {
System.out.println("Es un numero Armstrong");
} else {
System.out.println("No es un numero Armstrong");
}
}
public static void main(String[] args) {
Armstrong();
}
}
import java.util.Scanner;
class Ejercicio9 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Ingrese un numero: ");
String cadena = sc.nextLine();
sc.close();
if (esArmstrong(cadena)) {
System.out.println("Es Armstrong");
} else {
System.out.println("No es Armstrong");
}
}
private static boolean esArmstrong(String cadena) {
int nDigitos = cadena.length();
int suma = 0;
for (int i = 0; i < nDigitos; ++i) {
int digito = Character.getNumericValue(cadena.charAt(i));
suma += (int) Math.pow(digito, nDigitos);
}
return Integer.parseInt(cadena) == suma;
}
}