2016-03-24 13 views
-2

Ich brauche Code zu schreiben, für Schleifen verwendet die folgenden (Beine für eine Person) zu erstellen:Ascii Art erstellen mit for-Schleife

 /***/ \***\ 
    /****/  \****\ 
/*****/  \*****\ 

Dieser in einer privaten Methode sein sollte (dh . createLegs), die Abstände links von den Beinen müssen auf eine Zahl (dh 10) verringert werden, so dass die Beine noch weg sind (so kann ich Schuhe später herstellen) und die Abstände zwischen den Beinen müssen in jeder Reihe zunehmen. Ich kann die Abstände drucken, die die Beine von der linken Seite weg bewegen, aber ich kann nicht herausfinden, wie man die Schrägstriche, das * s dazwischen, das oder das andere Bein erzeugt. Jede Hilfe wird geschätzt. Das ist was ich bisher habe.

private void drawLegs() 
{ 
    final char SPACE=' '; 
    final int DISTANCE = 16; 
    final int HEIGHT = 7; 
    final char FWD='/'; 
    final char BWD='\\'; 

    for(int row=0; row<HEIGHT; row++) 
     { 
     int spaces = DISTANCE-row; 
     for(int count=0;count<spaces;count++) 
      { 
       System.out.print(SPACE); 
      } 
      System.out.println(); 
     } 
+2

Willkommen bei SO. Bitte lesen [fragen]. Wo ist dein Code? Was hast du probiert? Wenn Sie erwarten, dass jemand Ihnen bei Ihren Hausaufgaben hilft, zeigen Sie bitte zuerst etwas Mühe. – OldProgrammer

+0

Wenn Sie ein Leerzeichen drucken können, warum können Sie keinen Schrägstrich oder einen Stern drucken? 'print ('')', 'print ('/')', 'print ('*')'. Was ist die genaue Art des Problems, vor dem Sie stehen? Beachten Sie, dass dies kein Dienst zum Verfassen von Code ist. Zeigen Sie daher, was Sie bisher getan haben. – Andreas

+0

aktualisiert mit dem, was ich bisher habe, bin ich mir nicht sicher, wie man mit der Erhöhung der Menge von * in jeder Zeile und wie man die Räume erhöht. – James

Antwort

0

Vielleicht wird es eine spezifische Antwort auf Ihre Frage, aber ich verstehe, was Sie tun können wie folgt.

private static void drawLegs() { 
     final char SPACE=' '; 
     int DISTANCE = 16; 
     final int HEIGHT = 7; 
     final char FWD='/'; 
     final char BWD='\\'; 
     int starCount = 1; 

     for (int row = 0; row < HEIGHT; row++) { 
      int spaces = DISTANCE - row; 
      for (int count = 0; count < spaces; count++) { 
       System.out.print(SPACE); 
      } 
      System.out.print(FWD); 
      for (int i = 0; i < starCount; i++) { 
       System.out.print("*"); 
      } 
      System.out.print(FWD); 
      for (int i = 0; i < starCount*2; i++) { 
       System.out.print(SPACE); 
      } 
      System.out.print(BWD); 
      for (int i = 0; i < starCount; i++) { 
       System.out.print("*"); 
      } 
      System.out.print(BWD); 
      DISTANCE--; 
      starCount++; 
      System.out.println(); 
     } 
    } 
0

Wenn Sie keine Schleifen erforderlich waren, ist die einfachste Art und Weise

gewesen
private void drawLegs() 
{ 
    System.out.println(" /***/ \\***\\"); 
    System.out.println(" /****/  \\****\\"); 
    System.out.println("/*****/  \\*****\\"); 
} 

hätte also die Art und Weise zu gehen - Sie brauchen nicht das Programm in Ihrem tun, nur das Problem zu verstehen - ist, eine Tabelle mit folgenden Werten zu schreiben: (1) Anzahl der Felder vor dem ersten Leg, (2) Anzahl der Sterne im ersten Leg, (3) Anzahl der Felder zwischen den Beinen und (4) Anzahl der Sterne in das 2. Bein (gezählt vom obigen Code).

4 3 4 3 
2 4 6 4 
0 5 8 5 

Für jede Spalte, haben Sie einen Startwert (die erste Zeile), und man sollte das Inkrement/Dekrement für jede Iteration der Schleife auf Figur kann.

Das letzte, was Sie brauchen, ist, wie Sie mehrere Zeichen verketten. Dies kann mit einer for Schleife erfolgen. Ein ein Beispiel: Angenommen, Sie 60-mal den Buchstaben „A“ am Ende eines Strings hinzufügen möchten:

String s = ""; 
for (int j=0; j<60; j++) s = s + "A"; 
+0

Danke, das scheint ein guter Startpunkt zu sein – James