Java Programmierung, Eclipse zeigt Fehler bei Klammer an

Hallo,

ich habe ein Socketprogramm geschrieben und Eclipse gibt mir ständig die Fehlermeldung, dass die geschweifte Klammer unten falsch wäre („expected {“).

Wäre klasse, wenn ihr mir helfen könntet.

Hier der Server Code:
import java.net.*;
import java.io.*;

public class Server
{
public static void main(String[] args) throws IOException
{
ServerSocket serverSocket = null;

try {
serverSocket = new ServerSocket(10007);
}
catch (IOException e)
{
System.err.println(„Could not listen on port: 10007.“);
System.exit(1);
}

Socket clientSocket = null;
System.out.println („Waiting for connection…“);

try {
clientSocket = serverSocket.accept();
}
catch (IOException e)
{
System.err.println(„Accept failed.“);
System.exit(1);
}

System.out.println („Connection successful“);
System.out.println („Waiting for input…“);

PrintWriter out = new PrintWriter(clientSocket.getOutputStream(),
true);
BufferedReader in = new BufferedReader(
new InputStreamReader( clientSocket.getInputStream()));
int y;
int x;
String inData;

while (y

hi

Du öffnest am Anfang zwei geschweifte Klammern. Und am Ende willst du 4 schliessen daran liegt glaub der Fehler

Gruß Flo

Hallo,

du hast 15 schließende und nur 13 öffnende geschweifte Klammern. ich denke, dass auch die letzte Klammer zuviel ist

viel Glück

Hi,

für dein unmittelbares Syntaxproblem reicht es die beanstandete Klammer sowie die unmittelbar davor ersatzlos zu löschen.
Die erste hast du wahrscheinlich bei der else-Konstruktion übersehen und die zweite hast du wahrscheinlich übersehen als du nachträglich die Streams bzw. die Sockets geschlossen hast aber das sind nur Vermutungen. Der Code ist danach zwar noch nicht fehlerfrei aber das ist dann ein anderes Problem :wink:.

Nützlicher Hinweis am Rande: Eclipse markiert alle zusammenhängenden Klammern, d.h. wenn du den Cursor unmittelbar hinter einer Klammer positionierst markiert Eclipse automatisch die zugehörige andere Klammer des selben Typs auf der selben Hierarchieebene. So sieht man z.B. schnell welche Klammer eine Methode schließt bzw. beginnt o.ä…
Wenn du dir einen Code-Stil angewöhnst, bei dem die Klammern auch sichtbar zusammengehören, dann erleichtert das bei Bedraf die fehlersuche ungemein, siehe z.B.

while (y

Hallo,
Danke für die Anfrage aber Sorry, ich kann Dir auf die Schnelle auch nicht weiter helfen. Ich bin schon seit ein paar Jahren aus dem Geschäft, hab momentan kein Eclipse mehr auf dem Rechner und kann den Fehler selbst nicht nachstellen…
Weiterhin viel Spaß!
Ludwig

such die zu offenen Klammen gehörenden geschlossenen Klammern, dann wird ein zuviel sein.
Tip struckturiere den Code indem Du nach jeder offenen Klammer den Text einrückst und ihn nach jeder geschlossenen Klammer wieder zurück setzt.

Hallo chaag.

Die Klammer, die du monierst ist die schließende Klammer der ganzen Klasse. Danach können keine Anweisungen mehr folgen. Wenn du also deine markierte Klammer und die davor löschst, hast du alle Anweisungen (inkl. serverSocket.close(); in deiner main-Methode.

Ich hoffe das hilft dir. Ciao, B.N.

Hallo,

ich habe ein Socketprogramm geschrieben und Eclipse gibt mir
ständig die Fehlermeldung, dass die geschweifte Klammer unten
falsch wäre („expected {“).

Wäre klasse, wenn ihr mir helfen könntet.

Hallo chaag,

Zähl doch einfach mal die öffnenden und schließenden Klammern nach. An der von Eclipse angemerkten Stelle müsste das absolute Ende der Routine stehen, weil dann alle geöffneten Klammern wieder geschlossen sind. Es folgen aber noch ein paar Zeilen Code und zwei schließende Klammern!

Irgendeinen - oder mehrere - Vorgang/gänge hast Du nicht korrekt abgeschlossen.

Viele Grüße
Siegfried

Hallo,

leider bin ich über Grundlagen noch nicht hinaus und kann da deswegen nicht weiter helfen.

Gruß Fred

Hi, die vorhergenhende schließende Klammer schließt die main-methode. Der Code darunter soll bestimmt auch noch zur main-Methode gehören, also sind die zwei schließenden Klammern dort überflüssig. Das programm scheint eh noch nicht fertig zu sein, weil viele lokale Variablen noch nicht initialisiert sind. Ein Tipp: Formatier Deinen Code am besten nach den Sun-Konventionen, dann fällt die sowas sofort auf.