Mit Hilfe der Konsole Muster ausgeben

Mattz

Mitglied
Hi Leute,
mein Aufgabe ist es mit Hilfe der Konsole so ein Muster zu erstellen.
* . . . . . *
. * . . . * .
. . * . * . .
. . . * . . .
. . * . * . .
. * . . . * .
* . . . . . *
Das ist mein Code und bis jetzt habe ich nur eine der beiden *Reihen hinbekommen könntet ihr mir vlt ein paar Tipps geben wie ich die zweite Reihe hinbekomme?
public class Picture {
public static void main(String[] args) {
int n = 8;
int row = 1;
do {
for (int j = 1; j < n; j++) {
if (j == row) {
System.out.print(" * ");
} else {
System.out.print(" . ");
}
}
System.out.println("");
row++;
} while (row < n);
}
}
 

KonradN

Super-Moderator
Mitarbeiter
Du musst Regeln festlegen, wann ein * gemalt werden soll. Dazu kannst Du die Reihe einfach mal Aufschreiben.

Bei dem ersten * war es einfach:
row 1 -> 1. Zeichen
row 2 -> 2. Zeichen
row 3 -> 3. Zeichen
...
Daraus hast Du dann die Abfrage j == row abgeleitet.

Das kannst Du aber nun auch noch für das zweite * aufschreiben:
row 1 -> 7. Zeichen
row 2 -> 6. Zeichen
row 3 -> 5. Zeichen
...
row 7 -> 1. Zeichen.
Kannst Du da eine Regel ableiten? Was ist denn da gegeben? Kannst Du irgend eine Rechenoperation machen, die immer das gleiche Ergebnis bringt? Wenn Du eine Regel formulieren kannst, dann kannst Du im Code abfragen:
Wenn Regel1 erfüllt oder Regel2 erfüllt, dann male ein *
Sonst male ein .
 

KonradN

Super-Moderator
Mitarbeiter
Dann fangen wir es einfach Schritt für Schritt an:

Der erste Schritt ist ja die Regel. Hast Du die formulieren können? Hier wäre der Tipp, dass Du einfach mal schaust, was da von Wert zu Wert sich ändert ... auf einer Seite immer -1 und auf der anderen Seite +1 ... Wenn man sich das als Äpfel vorstellt: Rechts nehme ich einen weg und links packe ich ihn hin: Dann bleibt die Anzahl der Äpfel gleich ...

Der zweite Schritt ist dann in Java ja einfach umzusetzen: Eine der Bedingungen muss erfüllt sein. Das kann man entweder einzeln abprüfen:
Java:
if (bedingung1) {
    // mache etwas
} else if (bedingung2) {
    // mache etwas
} elese {
    // mache was anderes
}

Ist natürlich nicht schön - da muss man ja zwei Mal das "mache etwas" schreiben. Daher kann man es in eine Bedingung zusammen fassen:
Java:
if ( (bedingung1) || (bedingung2) ) {
    // Mache etwas
} else {
    // Mach was anderes
}

Eine Bedingung hast du schon, also ein
if ( (j==row) || (bedingung2) ) {

Jetzt fehlt nur noch die bedingung2.
 

Neue Themen


Oben