2017-10-11 4 views
-2

Ma méthode factorielle fonctionne correctement, bien que je souhaite changer la sortie en sortant simplement le nombre et le résultat factoriel. Par exemple, je voudrais si l'utilisateur entre 6 pour la sortie de dire 6 * 5 * 4 * 3 * 2 * 1 = 720, au lieu de factoriel de 6 est: 720.Format factoriel Java

int count, number;//declared count as loop and number as user input 
    int fact = 1;//declared as 1 
    Scanner reader = new Scanner(System.in); // Reading from System.in 
    System.out.println("Please enter a number above 0:"); 
    number = reader.nextInt(); // Scans the next token of the input as an int 
    System.out.println(number);//prints number the user input 
    if (number > 0) { 
     for (i = 1; i <= number; i++) {//loop 
      fact = fact * i; 
     } 
     System.out.println("Factorial of " + number + " is: " + fact); 
    } 
    else 
    { 
     System.out.println("Enter a number greater than 0"); 
    } 
} 
+0

utilisation *** System.out.print() *** en quelque sorte dans la boucle –

+1

Donc, écrire un boucle qui imprime les nombres de 6 à 1, séparés par espace-étoile-espace. Tu sais écrire une boucle. Vous savez comment imprimer. Maintenant, mettez vos connaissances ensemble. – Andreas

Répondre

0

créer une chaîne et un magasin les nombres.

essayez quelque chose comme ceci.

int count, number;//declared count as loop and number as user input 
    String s; //create a string 
    Scanner reader = new Scanner(System.in); // Reading from System.in 
    System.out.println("Please enter a number above 0:"); 
    number = reader.nextInt(); // Scans the next token of the input as an int 
    int fact = number;//store the number retrieved 
    System.out.println(number);//prints number the user input 
    if (number > 0) { 
     s=String.valueOf(number); 
     for (int i = 1; i < number; i++) {//loop 
      fact = fact * i; 
      s = s +" * "+String.valueOf(number-i); 
     } 
     System.out.println(s+ " = " + fact); 
    } 
    else 
    { 
     System.out.println("Enter a number greater than 0"); 
    } 
0

Vérifiez cette approche récursive: (vérifier les nombres négatifs vous-même: D)

public static void main(String[] args) { 
    Scanner scanner = new Scanner(System.in); 
    int num = scanner.nextInt(); 
    System.out.println(getFactorialString(num, " = " + getFactorial(num))); 
} 

public static String getFactorialString(int num, String result) { 
    if (num == 0) return "0 => 1"; 
    if (num == 1) { 
     result = "" + num + "" + result; 
    } else { 
     result = getFactorialString(num - 1, result); 
     result = "" + num + " x " + result; 
    } 
    return result; 
} 

public static int getFactorial(int num) { 
    if (num == 0) return 1; 
    return num * getFactorial(num - 1); 
}