# Mit Hilfe der Konsole Muster ausgeben



## Mattz (17. Okt 2022)

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 (17. Okt 2022)

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 .


----------



## Mattz (17. Okt 2022)

An sich verstehe ich die wie es gedacht ist ich kriege es einfach nicht in Code umgewandelt


----------



## KonradN (17. Okt 2022)

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:

```
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:

```
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.


----------



## Mattz (17. Okt 2022)

Habe es hinbekommen danke für die Hilfe


----------

