Fehlermeldung else without if

JL51

Aktives Mitglied
Hallo, mein Code funktioniert, allerdings nur, solange ich im if-else-Block keine System.out.println() Anweisung gebe. Genau so, wie ich es gemacht habe, habe ich es in einem Beispiel-Code im Internet gesehen, aber es funktioniert nicht. Wie realisiert man eine System.out.println() Anweisung innerhalb eines if-else Blocks? Danke für Info.

Java:
public class Ulam
{
	public static void main (String[] args)
	{
		int zahl;
		zahl = 123;
		
		while(zahl > 1)
		{	
			while(zahl%2 == 0)
			{
				zahl = zahl/2;
			}
				if(zahl != 1)
				{
					System.out.println(zahl);
				}	
				zahl = zahl * 3 + 1;	
				else
			System.out.println(zahl);	
		}		
	}
}
 
Zuletzt bearbeitet:
Hallo

Die korrekte Syntax für if - else sieht folgendermassen aus:
Code:
if(<bedingung>){
    <code>
}
else{
    <code>
}
(Wobei die geschweiften Klammern weggelassen werden können.)

Bei deinem Beispiel wird diese Syntax wegen dem zahl = zahl * 3 + 1 verletzt (da zwischen } und else).
Gehört diese Zeile zum if oder zum else oder gar nicht zu der Bedingung? je nachdem müsstest du den Code an die korrekte Stelle verschieben.


Freundliche Grüsse
CptSocket
 
Vielen Dank, CptSocket. Ich komme da aber trotzdem nicht weiter. Nach dem if habe ich jetzt Code eingefügt, obwohl es sehr unschön ist, da zahl=zahl hinzuschreiben, nur damit da Code steht. Nach dem else genauso. Es ändert aber nichts daran, daß es insgesamt nicht funktioniert. Die Fehlermeldung bleibt. Kannst Du es bitte mal so hinschreiben, daß es funktioniert? Dann habe ich es im Kasten. Danke.
 
So würde es funktionieren, jedoch wissen wir nicht in welchen Zweig du was haben willst. Wie Socket bereits geschrieben hat, muss nach der geschweiften Klammer die den if-Zweig abschließt sofort der else-Zweig folgen & nicht noch ein Codestück dazwischen!

Java:
public class Ulam
{
	public static void main (String[] args)
	{
		int zahl;
		zahl = 123;
 
		while(zahl > 1)
		{	
			while(zahl%2 == 0)
			{
				zahl = zahl/2;
			}
				if(zahl != 1)
				{
					System.out.println(zahl);
					zahl = zahl * 3 + 1;	

				}	
				else System.out.println(zahl);	
		}		
	}
}
 
Zuletzt bearbeitet:
Super, fLooojava, Danke!! Jetzt weiß ich, daß dann zwischen if und else der gesamte Code innerhalb der Klammern stehen muß und nicht nur die System.out.println() Anweisung.
 
Kein Problem, und wie bereits erwähnt kann man sich die geschweiften Klammern sparen, wenn man beispielsweise nur eine weitere Codezeile hat.

Generell würde ich aber immer folgendes empfehlen:

Java:
if(){
//Code
}
else {
//Code
}

.... analog zum Beitrag von Socket.
 

Zurück
Oben