Warum funktioniert dieser Code nicht? (Array)
-
Wenn ich folgendes Array vom Objekt SocketHandler deklariere gibt er mir diese Fehler aus.
Server.java:7: ']' expected SocketHandler a[50]; ^ Server.java:7: illegal start of expression SocketHandler a[50]; ^ Server.java:32: ']' expected SocketHandler a[ID] = new SocketHandler(client, ID); ^ Server.java:32: illegal start of expression SocketHandler a[ID] = new SocketHandler(client, ID); ^ 4 errors
Die Deklaration sieht folgendermaßen aus:
import java.net.*; import java.util.Scanner; public class Server { public static void main(String[] args) throws IOException { SocketHandler a[50]; int port = 4444; int ID = 0; ServerSocket server = null; try{ server = new ServerSocket(port); } catch(IOException e){ System.out.println("Server konnte nicht gestartet werden"); System.exit(1); } Socket client = null; while(true){ try{ client = server.accept(); } catch(IOException e){ System.out.println("Verbindung zu Client konnte nicht aktzeptiert werden!"); System.exit(1); } SocketHandler a[ID] = new SocketHandler(client, ID); a[ID].start(); client = null; ID++; } } }
-
SocketHandler a[];
Die Größe gibst du erst an, wenn du das Array mit new erzeugst (was du übrigens bisher nicht machst).
Wenn du später darauf zugreifst, darfst du natürlich nicht mehr SocketHandler davorschreiben.
-
Als kleiner Nachtrag: Arrays sind auch Objekte, d.h. du kannst sie nicht wie primitive Typen einfach mit "Typ test[50]" anlegen, sondern du hast wie bei Objekttypen eine Referenz "Typ[] test" und legst sie wie von MDK erwähnt mit new dann an - bis dahin hat test den Wert null und ein Zugriff auf test[id] wird dir eine NullPointerException werfen.
MfG SideWinder