Java Syntax error, insert "while ( Expression ) ;" to complete DoStatement, Fehler ?

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.721
Hey Community,

Ich bin gerade dabei meine HA für die Schule zu machen und frage mich wo der Fehler da liegt:
Unbenannt.png

Ich weiß nicht, was da Falsch sein soll, ich habe ja eine While-Schleife am Ende... !
Ich bin häufiger aufgeschmissen, wenn ich nicht weiß, was falsch ist, trotz das es da steht.

Schon mal Danke im Vorraus und MFG
 
Letztes "else if" fehlt eine "}". Und letzte Zeile 1x "}" wegmachen.
 
Zähl nochmal die Klammern nach. Oder besser noch: pro Zeile höchstens eine öffnende oder schließende geschweifte Klammer und sauber einrücken.
 
1. Das ist C# nicht Java ;)
2. Kontrolliere nochmal alle Blöcke und Klammern... Was gehört zusammen, was soll einen Block bilden.
 
Dann schau Dir mal Deine Schleifenbedingungen genau an und überlege außerdem, ob zwei Schleifen hier sinnvoll sind.
 
Überhaupt habe ich so meine Zweifel, ob die for-Schleife zumal noch mit dem Strichpunkt dran so geplant ist...
 
@baizon: Danke, hat aber leider nichts gebracht...
@xbrtll: Für jede { Klammer gibt es auch eine } Klammer
@CapFuture: Nein, es ist Eclipse Indigo, also Java :P

Programmiere erst seit ca. 2 Monaten in der Schule, sind also noch nicht sooo weit.
 
Ja, unten noch eine Klammer "}" zu viel? Außerdem ist deine "for" Anweisung nun total falsch.
 
Und poste bitte nicht Screenshots, es gibt einen CODE Tag, welcher genau dafür gedacht ist.

Edit:
Hier bitte ein Beispiel zu do... while, da du es dort mit den Klammern wohl nicht ganz verstanden hast. The while and do-while Statements
 
Zuletzt bearbeitet:
Habe das Problem nun gelöst, Danke !
CODE Tag ? Wo kann ich den kopieren ?

Sitze jetzt noch am Programm, falls es noch Probleme gibt, melde ich mich nochmal, aber DANKE !
Hänge gerade dabei, die do Schleife 7 mal auszuführen.
 
Ich hocke jetzt schon 40 min. vor der doofen Aufgabe und finde den Fehler einfach net...
Die Aufgabe lautet:
Schreiben Sie ein Programm, das sich eine Zufallszahl zwischen 1 und 100 "ausdenkt" und den Spieler zum Raten dieser Zahl auffordert. Ist die eingegebene Zahl falsch, teilt das Programm mit, ob die gesuchte Zahl größer oder kleiner ist. Dies wird so lange fortgesetzt, bis der Spieler die richtige Zahl eingegeben hat. Der Spieler hat aber max. 7 Versuche.

Code:
package Uebung3;

import java.io.IOException;

import support.Console;

public class Ratespiel {

	public static void main(String[] args) throws IOException {
		int z = (int) (Math.random() * 100 + 1), ein, frei = 7;
		int i = 1;

		Console.println("Ihre getippte Zahl eingeben, sie haben noch " + frei
				+ " Versuche!: ");
		ein = Console.readInt();

		do {
			for (i = 1; i < 8; i++)

				frei = i;

			if (ein > z) {
				Console.println("Die gesuchte Zahl ist kleiner als ihre eingegebene Zahl, sie haben noch "
						+ frei + " Versuche!");
				ein = Console.readInt();

			} else if (ein < z) {
				Console.println("Die gesuchte Zahl ist größer als ihre eingegebene Zahl, sie haben noch "
						+ frei + " Versuche!");
				ein = Console.readInt();

			} else if (ein == z) {
				Console.println("Glückwunsch, sie haben die Zahl erraten!");

			}
		} while (i < 8);
	}
}
 
Eine wahnsinnig ausführliche Fehlerbeschreibung deinerseits... Ich wiederhole aber nochmal:
Überhaupt habe ich so meine Zweifel, ob die for-Schleife zumal noch mit dem Strichpunkt dran so geplant ist...
Wobei der Strichpunkt nun auf frei = i; angewachsen ist. Oder damit du es nicht so schwer hast: vor dem if gilt stets frei = 7 und i = 8.
 
Ja und... ?

Bei "for (i = 1; i < 8; i++)" rechnet er i = 1+1 bis 7, da der Spieler ja nur 7 Versuche hat und frei = i. Also die Anzahl der noch vorhandenen Versuche.
Ergänzung ()

Zu dem terminated mir das Programm immer, nachdem ich die 2. Zahl eingegeben habe...
 
Du musst hier nicht schnell antworten, denke lieber mal etwas über die Hinweise nach! Noch ein Stück klarer als eben: die for-Schleife endet schon vor dem if.
 
Habt ihr schonmal debuggt? Rechtsklick auf den Streifen links neben dem Editierfenster -> Toggle Breakpoint und oben auf den Käfer drücken. Dann kannst du dich mit F6 oder F7 Zeile für Zeile durch das Programm hangeln und schauen, was es eigentlich so tut. Wenn du dabei mit der Mouse über die Variablen fährst, siehst du deren Belegung.

Lies dir außerdem nochmal die Aufgabenstellung genau durch. Eigentlich kommt nur einmal ein "solange" vor, also brauchst du vermutlich auch nur eine Schleife.

Code:
denkDirEineZahlAus;
tue {
lassDenNutzerRaten;
} solange ( NICHT(alle7VersucheVerbraten) && NICHT(dieRichtigeLösungGefunden) );

Hilfreich ist vielleicht auch die Überlegung, dass folgendes gleichbedeutend ist:
Tue etwas bis ich stop sage
Tue etwas solange ich nicht stop sage

Falls dich das nur noch mehr verwirrt, dann sorry :(
 
Zuletzt bearbeitet:
Du könntest auch mit i-- rückwärts zählen, nur so als Tipp :D Und eine Schleife reicht. Mehr verrate ich nicht.
 
Zuletzt bearbeitet:
Zurück
Oben