Erste Schritte Sternchenpyramide mit For-Schleifen erstellen

emorej

Mitglied
Ich verstehe ein wahrscheinlich simples Programm leider überhaupt nicht und verzweifle gerade dadran.Hoffe, Ihr könnt mir weiterhelfen🙂!

Ziel: Ich soll eine Pyramide mit Sternchen erhalten.

Lösung:

[JAVA]

public void Pyramide(int pZeilen){
for(int i=1;i<=pZeilen;i++)
{
for(int y=1;y<=pZeilen-i;y++)
{
System.out.print(" ");
}


for(int z=1;z<=2*i-1;z++)
{
System.out.print("*");
}


System.out.println();
}
[/code]

Tippt man bei pZeilen 4 ein, so kommt folgendes heraus:

attachment.php


Hier ein Bild zur Veranschaulichung:
7839-sternchenpyramide-for-schleifen-erstellen-veranschaulichung.jpg


pZeilen sind die die Zeilen.
i sind die Zeilen.
y sind die benötigten Sternchen.
z sind die Leerzeichen vor den Sternchen.

Ich verstehe das Programm eigentlich, nur bei dem Teil mit den Leerzeichen bin ich etwas ratlos.

Dieser Teil des Programms:

[JAVA]for(int y=1;y<=pZeilen-i;y++)
{
System.out.print(" ");
}

[/code]

Für mich würde das ganze Sinn ergeben, wenn y konstant 1 bleiben würde. Aber y wird bei jeder Wiederholung ja um +1 erhöht.

Beispiel mit pZeilen=4:

1.Zeile: y<=pZeilen-i -> Würde ja Folgendes bedeuten: 1<=4-1 -->> 1<=3

Das ergibt ja auch noch Sinn, aber nun kommt der Punkt, wo ich es nicht weiter verstehe:

2.Zeile: y<=pZeilen-i -> Würde ja Folgendes bedeuten: 2<=4-2 -->> 2<=2

Und dann würde er ja keine 2 Leerzeichen mehr machen. Würde mich wirklich sehr über eine Antwort freuen🙂!

Danke schonmal im Voraus!
 

Anhänge

  • veranschaulichung.jpg
    veranschaulichung.jpg
    60,5 KB · Aufrufe: 157
  • test.jpg
    test.jpg
    14,3 KB · Aufrufe: 135
Zuletzt bearbeitet:
Ist eine falsche Annahme. Richtig wäre, da sich ja i nicht verändert:
y<=pZeilen-i -> 2 <= 4-1 <=> 2 <= 3

Danke für deine schnelle Antwort. Denke, dass ich das nun verstanden habe. Aber denke, dass ich wieder bei einem anderen Programm das gleiche Problem habe.

Java:
 public void Test(int pN)
{
	for(int i=1;i<=pN;i++)
	{
		System.out.print(i+":");


		for(int z=1;z<=i;z++)
		{
		System.out.print(z+" ");
			
		}
		
		System.out.println();
	}
}

Gibt Folgendes aus:

1.Zeile: 1:1
2.Zeile: 2:1 2
3.Zeile: 3:1 2 3

Ich verstehe nicht, wie hinter dem Doppelpunkt z immer wieder 1 sein kann. z wird doch auch immer um +1 erhöht? Ich glaube, ich überlege irgendeine Kleinigkeit einfach falsch:/

MfG
 
Geschachtelte Schleifen sagen dir schon was?

Konstrukte wie:
Java:
for(int i = 0; i < 100; i++) {
  for(int j = 0; j < 100; j++) {
    ...
  }
}

Heißt nichts anderes das die innere Schleife 100 mal ausgeführt wird.

Durchlauf 1: i = 0, j = 0 ... 99
Durchlauf 2: i = 1, j = 0 ... 99
...
Durchlauf 100: i = 99, j = 0 ... 99

Ist das jetzt klar? Der innerste Code wird 100 * 100 (also 10000) mal ausgeführt.
 
Naja eine for-Schleife ist so aufgebaut, dass alle Informationen im Schleifenkopf stehen - wie oft die Schleife ausgeführt inkl. der Laufvariable. Dann kommt der Schleifenrumpf, der dann so oft ausgeführt wird (also alles was zwischen den geschwungenen Klammern steht). Nach Ausführung des Rumpfes wird deine Laufvariable verändert.

Java:
for(int i = 0; i < 10; i++) // Schleifenkopf
{ /* Schleifenrumpf */ }

Anders kann eine for- mit eine while-Schleife geschrieben werden. Vielleicht wird dann klar, wann i erhöht wird.
Java:
int i = 0;
while(i < 10) {
  // Möglicherweise eine geschachtelte Schleife
  i++;
}

Also wie man sieht wird i erst am Ende des Schleifenrumpfes erhöht.
 
Zuletzt bearbeitet:
Vielleicht hast du noch übersehen, daß da 2x nur print steht und am ende 1x println. also wird 2 mal in der gleichen zeile weitergeschrieben und nur am ende eine neue zeile gemacht.
 

Neue Themen


Zurück
Oben