Código
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package practica; import java.util.Scanner; /** * * @author Charlie */ public class Practica { /** * @param args the command line arguments */ short num; //inicializamos la variable del numero que queremos pedir al usuario System.out.println("Introduca un numero entero positivo."); // un print donde avisemos al usuario que debe introducir el numero a continuacion num = sc.nextShort(); // pedimos por teclado un numero y lo guardamos en la variable "num" //Calculamos el factorial de num int fact = 1; for(int i = 2 ; i <= num ; i++){ fact *= i; } System.out.println(fact); //no te lo pide el enunciado pero yo imprimo el resultado del factorial por comodidad y hacer mis comprobaciones String parejaS = ""; // creamos esta variable string para guardar las parejas de digitos que vamos cogiendo del numero factorial int pareja; // lo mismo pero de tipo entero para mas adelante poder hacer la conversion a acsii, ya que solo funciona con numeros enteros no con string for (int i = 0; i < cadena.length(); i++) { //iniciamos el for parejaS += cadena.charAt(i); // aqui vamos cogiendo cada digito del numero factorial pasando por todas sus posiociones "i" while (parejaS.length() == 2) { // creamo un while para decirle al rpograma que solo vaya guardando digitos de dos en dos pareja = Integer.parseInt(parejaS); // y aqui es cuando pasamos esa pareja de digitos que estaban de tipo string a tipo entero if (pareja <= 32) { // creamos un if y preguntamos que si la pareja de numero que hemos cogido anteriormente es menor o igual que 32 pues... }else{ // en el caso de que no sea menor o igual a 32, es decir, mayor pues... } parejaS = ""; // y esto es para actualizar la variable, es decir, el factorial de 7 es 5040, pues una vez hecho todo el "if" anterior con el 50 pues se restablezca su valor a cadena vacia para deja paso al siguiente numero que seria el 40 y asi evitar que se nos amontonen los numeros } } int n = cadena.length(); //como ultimo creamos una variable que nos diga la longitud de nuestra numero //si la longitud es impar significa que nos sobrara un numero que quedara solitario por ejemplo con el factorial de 8 que es 40320 el ultimo 0 se nos queda sin pareja, pues para cogerlo hacemos lo siguiente if (n%2 != 0) { // si la longitud de n es impar significa que sobra un numero al final por lo que... System.out.print("~"); // ese numero siempre será menor que 32 ya que solo es un digito y lo maximo es 9 asi que lo sustituimos por la "~" } } }
He probado el ejercicio con varios ejemplos no solo con el numero 7 y me va perfecto aqui tienes los ejemplos, suerte!!