2017-10-11 18 views
-2

Meine faktorielle Methode funktioniert korrekt, obwohl ich die Ausgabe nur von der Ausgabe der Nummer und des faktoriellen Ergebnisses ändern möchte. Zum Beispiel würde Ich mag, wenn der Benutzer 6 für die Ausgabe tritt zu sagen 5 * 6 * 4 * 3 * 2 * 1 = 720, anstelle von faktoriellen von 6: 720.Java factorial format

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

Verwendung *** System.out.print() *** irgendwie in der for-Schleife –

+1

So ein schreiben Schleife, die die Zahlen von 6 bis 1, getrennt durch Raum-Stern-Abstand, druckt. Sie wissen, wie man eine Schleife schreibt. Sie wissen, wie man druckt. Jetzt stelle dein Wissen zusammen. – Andreas

Antwort

0

einen String erstellen und zu speichern die Zahlen.

versuchen Sie etwas wie das.

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

Schauen Sie sich diese rekursive Ansatz: (überprüfen negative Zahlen selbst: 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); 
}