2017-11-16 2 views
-4

Ich brauche Hilfe, damit meine Codeausgabe wie im Bild unten aussieht, und ich bin nicht sicher, was ich falsch mache, und ich muss meine Code-Ausgabe eingerückt haben und kann mich nicht erinnern, wie einrückenIch brauche Hilfe, damit mein Code wie folgt aussieht:

Hier ist mein Code zur Zeit:

// Fig. 18.3: FactorialCalculator.java 
// Recursive factorial method. 

public class Assignment_6_1 
{ 
    // recursive method factorial (assumes its parameter is >= 0 
    static StringBuilder s = new StringBuilder(); 

    public static long factorial(long number) 
{ 
     if (number == 0) // test for base case 
     { 
      return 1; 
     } else {// recursion step   
      if (s.length() == 0) { 
       s.append(number).append("*").append(number - 1); 
      } else { 
       for (int i = 0; i < s.length(); i++) { 

       } 
       System.out.println(number + " * " + (number - 1) + "!"); 
       s.append("*").append(number).append("*").append(number - 1); 
      } 
      return number * factorial(number - 1); 
     } 
    } 

    // output factorials for values 0-21 
    public static void main(String[] args) { 
     System.out.println("Hannah Coffey - Lab 6"); 
     // calculate the factorials of 0 through 20 
     for (int counter = 0; counter < 25; counter++) { 
      s = new StringBuilder(); 
      System.out.println(counter + "!"); 
      System.out.printf("%d! = %d%n", counter, factorial(counter)); 
     } 
    } 
} // end class FactorialCalculator 

Hier ist, was ich brauche es sicher aussehen und nicht das, was ich tue, falsch:

enter image description here

Jede Hilfe wäre sehr dankbar .

Mein Programm sieht derzeit wie folgt aus: enter image description here

+0

Und wie sieht die Ausgabe wie zur Zeit? – stdunbar

+1

Ich habe diese Frage abgelehnt, da es keinen Hinweis auf Debugging für diesen Code gibt. Bitte bearbeiten Sie Ihre Frage, um uns zu zeigen, was Ihr Debugging aufgedeckt hat, sowie eine spezifische Frage zu einer bestimmten Codezeile. Siehe: [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve) und [Debuggen von kleinen Programmen] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs /) –

+0

Ich habe ein Foto von dem, was die Ausgabe derzeit aussieht, hinzugefügt –

Antwort

-2
public static long factorial(long number){ 
     if (number == 0) // test for base case 
     { 
      return 1; 
     } else {// recursion step 
      if (s.length() == 0) { 
       s.append(number).append("*").append(number - 1); 
      } else { 
       String spaces = ""; 
       for (int i = 0; i < number; i++) { 
        spaces = spaces+" "; 
       } 
       if(number==1) 
        System.out.println(" Base Case: 1"); 
       else { 
        System.out.println(spaces + "Recursive call:" + number + " * fact(" + (number - 1) + ")"); 
        s.append("*").append(number).append("*").append(number - 1); 
       } 
      } 
     return number * factorial(number - 1); 
     } 
    } 

public static void main(String[] args) { 
    System.out.println("Hannah Coffey - Lab 6"); 
    // calculate the factorials of 0 through 20 
    for (int counter = 0; counter < 25; counter++) { 
     s = new StringBuilder(); 
     for (int i = 0; i < counter; i++) { 
      spaces = spaces+" "; 
     } 
     System.out.println(spaces+"Recursive call:"+counter + "!"); 
     System.out.printf("%d! = %d%n", counter, factorial(counter)); 
    } 
} 
+0

heißt es, dass es Syntaxfehler gibt. –

+0

Danke, ich habe es behoben. Danke für die Hilfe!! –

+0

'Leerzeichen +" "' ist nicht effizient ... es wird bei jeder Iteration eine 'Zeichenfolge' eingefügt. – AxelH

0

Sie können Pad ein StringString.format wie folgt aus:

String.format("%10s", "foo"); 

Es wird eine linke Polsterung von 7 Räume 7 + foo.length = 10;

erstellen

Jetzt können wir diese Dynamik wie:

rendern
public static String padding(int i) { 
    return i == 0 ? "" : String.format("%" + i + "s", ""); 
} 

Übergeben Sie einfach die Anzahl der Leerzeichen und lassen Sie den Formatierer den Job erledigen.

for(int i = 5; i >= 0; --i){ 
    System.out.println(padding(i) + "i"); 
} 

Ausgang:

 5 
    4 
    3 
    2 
1 
0 
Verwandte Themen