# for Schleife, gleiches ergebnis mit und ohne {}



## poolk (18. Jul 2011)

Schon wieder ich.


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

  for(int x =0; x < 4; x++)

  {
  for(int y = 4; y > 2; y--)
  {                                              //Klammer 1
  System.out.println(x + " " + y);
  }                                              //Klammer 2, beide entfernen gleiches Ergebnis?
  {
  if (x ==1)
  {
  x++;
  }
  }
  }
  
  }
}
```

wenn man in dieser Übung die Klammern entfernt ergiebt sich das gleiche Ergebnis wie mit. Wieso ist das so? In dieser Klammer müsste doch Auswirkungen auf die y-Schleife haben?

Die Lösung ist mit Klammern, aber wieso geht es auch ohne?

Gruss


----------



## eRaaaa (18. Jul 2011)

Ist doch nur ein Statement innerhalb der Klammer, also machts dann kein unterschied. In der Lösung stehts mit Klammern vermutlich, weil`s so die Code Conventions vorgeben - IMMER Klammern benutzen am Besten!


----------



## Gast2 (18. Jul 2011)

```
for (int x = 0; x < 4; x++){
			for (int y = 4; y > 2; y--) {
				System.out.println(x + " " + y);
			} 
			
			if (x == 1) {
				x++;
			}
		}
```


```
for (int x = 0; x < 4; x++){
			for (int y = 4; y > 2; y--)
				System.out.println(x + " " + y);
			
				if (x == 1) {
					x++;
				}
		}
```
Zwischen den beiden Versionen gibts doch keinen unterschied.


----------



## RySa (18. Jul 2011)

Weil du für die Schleife nur eine Anweisung bzw. Zeile hast. Wären es mehr Anweisungen, die innerhalb dieser Schleife ausgeführt werden müssten, müssten Sie mit den Klammern umschlossen werden. Für dein Beispiel brauchst du keine Klammern, wobei ich sie zur Übersicht verwenden würde. Und noch ein Tipp. Strukturiere dein Code besser (Absätze, damit man besser erkennen kann, welche Klammer was beendet)


----------



## poolk (18. Jul 2011)

Vielen Dank Rysa. Genau das war die Antwort die ich haben musste (ohne es zu wissen).
Ist es bei allen Schleifen (und sonst noch irgendwo) so, dass man bei nur einer Anweisung keine Klammern bräuchte? Wobei es natürlich nach den Code Conventions immer zu empfehlen ist. Interessant.

Und danke für den Tipp!


Hier noch überarbeitet:


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

     for(int x =0; x < 4; x++)
     {
        for(int y = 4; y > 2; y--)

        {
         System.out.println(x + " " + y);
        }

        {
        if (x ==1)
          {
            x++;
          }
        }
     }
  }
}
```

Danke und gute Nacht


----------



## Gast2 (18. Jul 2011)

bei der if-abfrage, der for-schleife und der while-schleife gilt, dass immer das nächste Statement betroffen ist.
Will man mehrere statements zusammenfassen nimmt man die { } Klammern.

Deinen Code könnte man auch so schreiben:

```
for (int x = 0; x < 4; x++) {
			for (int y = 4; y > 2; y--)
				System.out.println(x + " " + y);
			if (x == 1) x++;
		}
```
Natürlich ist der Code aber lesbarer wenn man generell Klammern setzt nach der Schleife/If-Abfrage.


----------



## ARadauer (18. Jul 2011)

@poolk: ich würde mir anfangen, sauber einzurücken. Arbeitest du mit Eclipse? Strg+Shift+F


----------



## poolk (18. Jul 2011)

Nein, mit dem java-editor. Ausserdem würde ich es noch nicht "arbeiten" nennen, aber danke für das "kompliment".


----------



## anonym2 (18. Jul 2011)

for-, for-each-, while-, do-while- usw. -Schleifen sowie switch-Konstrukte. In dem Zusammenhang: Dangling else ? Wikipedia

Bei anderen Sachen (Klassen, Methoden, statischen Blöcken etc.) sind diese NICHT optional.

Die java code conventions sieht vor, diese aus Gründen der Lesbarkeit nicht wegzulassen. Um es zu lernen, finde ich es aber praktisch, mal solchen und solchen Code zu sehen und zu schreiben.

So far.

Best wishes.

anonym


----------



## anonym2 (19. Jul 2011)

UUUnnd bei Nicht-Klammerung bezieht sich die Kontrollstruktur jeweils nur auf genau die nächste nachfolgende Anweisung. Gibt es eine solche nicht, kann anstatt {} in machen Fällen auch ein ; stehen.


----------



## Dit_ (19. Jul 2011)

poolk hat gesagt.:


> Nein, mit dem java-editor.



:noe:

Bestimmt empfehlung von der Hochschule oder ? Bei uns haben die auch sowas empfohlen (Editor, SciTE...), kein Wort über Eclipse, NetBeans und Co.


----------



## poolk (20. Jul 2011)

Nein, eher eine empfehlung von google . Bringe mir Java (mit Buchhilfe) selbst bei, um wieder mal was neues zu lernen. Eclipse kenne ich von einem ganz kurzen intermezzo mit android...

Danke euch allen für die vielen tipps und anregungen.


----------



## Murray (20. Jul 2011)

Wenn du ernsthaft in Java entwickeln willst, dann sieh dir nochmal Eclipse an. Der JavaEditor ist bestenfalls eine Krücke.


----------



## Crian (20. Jul 2011)

Eclipse ist wirklich super. Gib dem Teil eine Chance.


----------

