Java-Programm zur Ausgabe einer Drachenform: Was ist hier falsch?
Ich muss folgende Aufgabe fertigstellen:
Schreibe ein Programm, welches einen Drachen mit vom Benutzer gegebener Länge ausgibt.
Beispiel: Benutzer gibt 6 ein. Das Progamm gibt Folgendes aus:
*
**
****
******
****
**
*
Was ist denn hier falsch?
Danke, falls jemand das weiß!
Hier mein Code:
public static void main(String[] args) {
String drache = JOptionPane.showInputDialog("Wie viele Sternchen möchten Sie ausgeben?");
int drachen = Integer.parseInt(drache);
for (int i = 0; i <= drachen; i++) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
for (int i = drachen - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
1 Antwort
1) Für jede Zeile musst du die Ausgabe von Leerzeichen mit einschließen.
+++*
++**
+****
******
Die Pluszeichen stellen hier repräsentativ die Leerzeichen dar.
Um die maximale Anzahl an Leerzeichen zu ermitteln (bzw. die Startmenge), könntest du die Hälfte der maximalen Spaltenzahl + 1 berechnen. Die Nachkommastelle kann durch eine Konversion zu int weggeschnitten werden.
Eine Schleife könnte dir helfen.
iteriere alle Zeilen
gebe aktuelle Anzahl an Leerzeichen via Schleife aus
verringere aktuelle Anzahl an Leerzeichen
gebe aktuelle Anzahl an Sternchen via Schleife aus
erhoehe aktuelle Anzahl an Sternchen
2) Du gibst die falsche Menge an Sternchen pro Zeile aus. Die Folge wäre 1 - 2 - 4 - 6. Du iterierst allerdings in Einerschritten, sodass es bei dir 1 - 2 - 3 - usw. ist.
Da wohl je Zeile stets zwei Sternchen hinzukommen/weggenommen werden sollen, könntest du in Zweierschritten iterieren. Einzige Sonderfälle stellen die erste und die letzte Zeile dar.
Z.T. bedarf es nur Adaption und Modifikation des Codes, den du schon hast. Grundsätzlich reicht eine einfache Programmabfolge. Am Beispiel von 6 Sternchen als maximale Zahl:
gebe erste Zeile aus (3 Leerzeichen, 1 Sternchen)
gebe oberen Mittelteil aus (2 - 0 Leerzeichen, 2 - 6 Sternchen)
gebe unteren Mittelteil aus (0 - 2 Leerzeichen 6 - 2 Sternchen)
gebe letzte Zeile aus (3 Leerzeichen, 1 Sternchen)
Grundvoraussetzung ist, dass du dich mit Schleifen auseinandergesetzt hast, was, laut dem obigen Code, der Fall war.
Wie soll ich denn das in Java schreiben?