# Sterne mit If



## SanVolv (1. Dez 2022)

Hallo Zusammen.

Das ist die Aufgabe:


* *
* *
* * * * * * * *
* * * * * * * *
* *
* *

Ich bekomme es einfach nicht hin die MItte zu erstellen...
Wie kann man das am Besten schreiben?





```
public class sterneA {

    public static void main(String[] args) {
        
        
        
        for (int i=1; i<=5; i++ )
        {
            System.out.print("*");
        
        for (int j=1; j<2; j++ )
        {   
            System.out.print("*");
            
                
        }
        System.out.println("*");
        }
    
        }
    }
```


----------



## Oneixee5 (1. Dez 2022)

```
System.out.println("**\n**\n********\n********\n**\n**");
```
Aber im Ernst: Wie ist denn die genaue Aufgabe? Du sollst Schleifen üben aber es muss ja noch irgend welche Bedingungen geben.


----------



## Hansen_07 (1. Dez 2022)

Vor allem steht im Titel auch noch `if`. Irgendwie fehlt die eigentliche Aufgabenstellung für diese Hausaufgabe.


----------



## SanVolv (1. Dez 2022)

Tut mir leid, da hab ich was durcheinander gebracht.

Die Aufgabe lautet:

Schreiben Sie Programme mit geschachtelten for-Schleifen, die folgende
Muster ausgeben:


----------



## temi (1. Dez 2022)

Ich geh mal davon aus, dass die Aufzählungspunkte nicht dazu gehören.

```
* *
* *
* * * * * * * *
* * * * * * * *
* *
* *
```
Schau dir einfach erst mal das Muster an. Könntest du den Code für das folgende Muster schreiben?

```
* *
* *
* *
* *
* *
* *
```
An welchen Stellen ist der Unterschied? Siehst du evtl eine Regel: Wenn ... dann ...?

Kannst du den vorherigen Code entsprechend erweitern?


----------



## SanVolv (1. Dez 2022)

temi hat gesagt.:


> Ich geh mal davon aus, dass die Aufzählungspunkte nicht dazu gehören.
> 
> ```
> * *
> ...




```
public static void main(String[] args) {
       
       
   
        for (int i=1; i<=4; i++ )
        {
            System.out.print("*");
       
        for (int j=1; j<=1; j++ )
        {  
            System.out.println("*");
    
           
               
        }
        }
   
        }
   
}
```

Ich hab mich bei der Überschrift leider vertan. Es sollte For sein und kein If... Tut mir leid


----------



## temi (1. Dez 2022)

Du solltest dringend an deinen Einrückungen arbeiten. Die sind so wie sie jetzt sind völlig unbrauchbar.

```
public static void main(String[] args) {

        for (int i=1; i<=4; i++ ) {
          
            System.out.print("*");
    
            // die Schleife ist ziemlicher Unsinn. Kannst du gleich println() schreiben, um einmal einen Stern auszugeben
            for (int j=1; j<=1; j++ ) {
                System.out.println("*");
            }
        }
 
    }
```

Sollt ihr ausschließlich for-Schleifen verwenden? Oder in Kombination mit if-Bedingungen?


----------



## SanVolv (1. Dez 2022)

temi hat gesagt.:


> Du solltest dringend an deinen Einrückungen arbeiten. Die sind so wie sie jetzt sind völlig unbrauchbar.
> 
> ```
> public static void main(String[] args) {
> ...


Danke für den Tipp mit den Einrücken
Leider sind wir die Aufgaben nicht durchgegangen, aber so wie ich es lese, soll es nur for-schleifen sein..
Hab schon viel rumprobiert, allerdings keine richtige Lösung gefunden...


----------



## temi (2. Dez 2022)

SanVolv hat gesagt.:


> so wie ich es lese, soll es nur for-schleifen sein


Wenn eine Zeile mit Sternen durch eine Schleife realisiert wird, wie viele Schleifen musst du dann hintereinander setzen, um das Gewünschte zu erreichen?

Kannst du davon Schleifen in einer weiteren Schleife zusammenfassen?


----------



## KonradN (2. Dez 2022)

Bei so Aufgaben ist es immer wichtig, sich zuerst zu überlegen, wie denn die einzelnen Schritte sind.

Bleiben wir bei dem einfacheren Beispiel von temi mit 2 Sternen pro Zeile:
6 Zeilen a 2 Sterne

Also ist das nichts anderes, als 6 mal eine Zeile mit 2 Sternen zu malen.

Damit hast Du es schon in zwei Teile aufgeteilt.

a) 6 Zeilen sollen gemalt werden. Das kriegt man über eine Schleife hin.
b) In der Schleife werden dann die Zeilen gemalt - das wäre dann eine Schleife, die halt 2 mal durchläuft und ein Sternchen malt. Danach erst wird ein Zeilenumbruch geschrieben.

Wenn Du das hast, dann kannst Du Dir überlegen, wie Du die Aufgabenstellung hin bekommst. Du malst immer 2 Sternchen außer du bist in bestimmten Zeilen ... da malst du dann eben mehr Sternchen pro Zeile.

Edit: *Ich hoffe Du merkst, dass man sich sowas als erstes ohne Computer und Java überlegen kann! Das ist das A und O beim Programmieren! Als erstes überlegen, wie denn der Algorithmus funktionieren soll! Man kann nicht einfach drauf los programmieren - da ist die Chance, dass schlicht nur Müll rauskommt, extrem hoch!*


----------



## temi (2. Dez 2022)

KonradN hat gesagt.:


> Wenn Du das hast, dann kannst Du Dir überlegen, wie Du die Aufgabenstellung hin bekommst. Du malst immer 2 Sternchen außer du bist in bestimmten Zeilen ... da malst du dann eben mehr Sternchen pro Zeile.


Der Teil ist abhängig davon, ob if-Bedingungen erlaubt sind. Ansonsten dürfen eben nicht sechs Zeilen mit zwei Sternen, sondern es muss eine andere Aufteilung/Zusammenfassung gewählt werden.


----------



## KonradN (2. Dez 2022)

temi hat gesagt.:


> Der Teil ist abhängig davon, ob if-Bedingungen erlaubt sind. Ansonsten dürfen eben nicht sechs Zeilen mit zwei Sternen, sondern es muss eine andere Aufteilung/Zusammenfassung gewählt werden.


Es ist nicht explizit verboten worden und wie würdest Du es ohne eine Bedingung sonst machen? Einfach drei mal zwei Zeilen malen? Dann kann man auch einfach um die Lösung aus #2 eine for Schleife machen, die eben 1 mal durchläuft.


----------



## SanVolv (2. Dez 2022)

temi hat gesagt.:


> Der Teil ist abhängig davon, ob if-Bedingungen erlaubt sind. Ansonsten dürfen eben nicht sechs Zeilen mit zwei Sternen, sondern es muss eine andere Aufteilung/Zusammenfassung gewählt werden.


Das weiß ich leider auch nicht. Die Aufgabenstellung steht oben, daher bin ich davon ausgegangen, dass man es nur mit for machen sollte...
Leider komm ich nicht drauf, wiie ich es anstellen könnte...


----------



## KonradN (2. Dez 2022)

SanVolv hat gesagt.:


> Schreiben Sie Programme mit geschachtelten for-Schleifen, die folgende
> Muster ausgeben:


Da steht nichts von if nicht erlaubt. Da steht etwas von verschachtelten for Anweisungen.

Außerdem kann man jedes if ein ein for verwandeln, wenn man das wollte:

```
for (;<BedingungAusIf>; ) { //<BedingungAusIf> ist das, was man in den (..) beim if hätte!
    // Was im if Block steht
    break; // Schleife nach einem Durchlauf verlassen.
}
```
Diese Diskussion ist also schlicht Quatsch. Es geht um das Nutzen von for Schleifen, diese müssen verschachtelt sein und das ist mit so einem Ansatz erfüllt.

Ansonsten frage ich mich: Was soll jemand lernen, wenn man das explizit bei der Aufgabe verbieten würde? So Aufgaben hat ja jemand erstellt, der sich etwas dabei gedacht hat ...


----------



## MarvinsDepression (2. Dez 2022)

Beschreibe das Muster in Worten:
Zwei mal ein Stern nebeneinander, dann neue Zeile. Das mache zwei mal.
Acht mal ein Stern nebeneinander, dann neue Zeile. Das mache zwei mal.
Zwei mal ein Stern nebeneinander, dann neue Zeile. Das mache zwei mal.

jedes "mal" steht für eine Schleife, durchaus auch eine "for"-Schleife.


----------



## temi (3. Dez 2022)

KonradN hat gesagt.:


> So Aufgaben hat ja jemand erstellt, der sich etwas dabei gedacht hat ...


Das ist aber spekulativ!


----------

