Dynamische Strings-Arrays in Java?
-
Hi Leute,
Ich will in meinem Programm einen String-Array mit einer vor dem Programstart unbekannten Zahl an Werten belegen!
das sollte ungefähr so aussehen:public void eintragen(Hashtable<Integer, String> h){ Enumeration <Integer> e = h.keys(); Integer temp_key; int i = 0; while (e.hasMoreElements()){ temp_key = e.nextElement(); Einträge[i][0] = temp_key.toString(); Einträge[i][1] = h.get(temp_key); i++; }
Jedoch wird bei dem Code dieser Fehler angezeigt:
ArrayIndexOutOfBoundsException
Weis jmd wie man das machen muss bzw umgehen kann...
-
Hallo nwbi, wie ist denn Eintraege deklariert und wie wird es initalisiert?
-
So:
String [][]Einträge = {{"1", "Lied 1"},{"2", "Lied 2"}};
-
Das Array hat also 2x2 Einträge. Folglich gibt es dann ein Problem, wenn Deine Schleife zum dritten mal durchläuft.
Du musst den Platz für Arrays vorab bei der Deklaration oder später mit new angeben. Wenn Du das nicht willst oder nicht kannst, kannst Du auch auf eine java.util.ArrayList umsteigen, die wächst mit.
-
OK danke ich werds versuchen
-
Hm ja ich bin mit keinem so vertraut und weis auch nicht wirklich wie man das machen soll!?
Chewie83:
Du musst den Platz für Arrays vorab bei der Deklaration oder später mit new angeben.
Hat jmd einen kurzen Code Ausschnitt in dem gezeigt wird wie das geht?
-
Zum Beispiel so:
public void eintragen(Hashtable<Integer, String> h){ Enumeration <Integer> e = h.keys(); Integer temp_key; int i = 0; Einträge = new String[h.size()][]; // äußeres Array definieren while (e.hasMoreElements()){ Einträge[i] = new String[2]; // inneres Array definieren temp_key = e.nextElement(); Einträge[i][0] = temp_key.toString(); Einträge[i][1] = h.get(temp_key); i++; }
-
Neu_Hier schrieb:
Hm ja ich bin mit keinem so vertraut und weis auch nicht wirklich wie man das machen soll!?
Chewie83:
Du musst den Platz für Arrays vorab bei der Deklaration oder später mit new angeben.
Hat jmd einen kurzen Code Ausschnitt in dem gezeigt wird wie das geht?//wenn du vorher weißt wie viel int[] b = {0,0,0,0,0}; // zur laufzeit int[] a = new int[meineDaten.length]; // oder int x = 0; // zur laufzeit eine zahl einlesen und in x speichern (z.B. x = 5) int [] c = new int[x]; //so kannst du von 0-4 in der for schleife problemlos auf das feld c zugreifen
-
OK super danke