Ghostridah Geschrieben 14. April 2009 Geschrieben 14. April 2009 Ich möchte einen Array erstellen in dem Benutzer nach Anfangsbuchstaben gruppiert abgespeichert werden: private String[][] create2DArray(String[] userArray, char[] index){ int i=0; String[][] result; for(int j=0;j<index.length;j++){ char charIt=index[j]; for(int x=0;userArray[i].charAt(0)==charIt; x++){ result[charIt][x]=userArray[i]; if(i<userArray.length){ i++; } else { break; } } } return result; } Leider möchte es nicht ganz so wie ich will.. und wenn ich den String result mit String[][] result = new String[index.length][20] initialisieren möchte bekomme ich ich eine ArrayIndexOutOfBoundsException. Im "index" char-Array stehen alle Buchstaben des Alphabets von A-Z Hat jemand für mich einen Vorschlag wie ich das Problem lösen kann?
kingofbrain Geschrieben 14. April 2009 Geschrieben 14. April 2009 Für mich passt die Exception nicht zur Zeile, wo Du das Array initialisierst. Die ArrayIndexOutOfBoundsException tritt in der Regel beim Zugriff auf ein Array an einem nicht existenten Index? auf. Kannst Du das bitte noch mal prüfen und die korrekte Zeile angeben? Peter
DominikJ Geschrieben 14. April 2009 Geschrieben 14. April 2009 Fehler müsste in dieser Zeile auftreten: result[charIt][x]=userArray[i]; Auch würde ich vermutlich kein Array nehmen sonderen eine HashMap o.ä. (j nachdem wie die weiter Nutzung aussieht) Und so wie ich das sehe wird m.E. falschrum begonnen. Wieso denn dein 'index' durchlaufen wenn da alle Buchstaben (26 an der Zahl, keine Zahlen, Sonderzeichen und ohne Groß/Klein Unterschied) drin stehen? Da würde es doch mehr Sinn machen, deine User zu durchlaufen und diese dem entsprechenden Buchstaben zuzuweisen. Spart eine Schleife und einiges an durchläufen.
Ghostridah Geschrieben 14. April 2009 Autor Geschrieben 14. April 2009 Der Fehler tritt in der Zeile result[charIt][x]=userArray[i]; auf, wie vermutet. Ich bekomme leider nur die Fehlermeldung "ArrayIndexOutOfBoundsException: 65". Ich nehme an wenn ich result[charIt][x] aufrufe wird für charIt der ASCII-Code von dem entsprechenden Buchstaben eingefügt. Denn an der Stelle 65 (dez) steht laut ASCII Tabelle, dass große "A" und das ist der erste Buchstabe des index-Arrays. Ich muss zugeben dass mich die Funktion die ich erstellt habe selbst leicht überfordert da ich ein relativer Neuling bin :upps . Bin auch gerne für Verbesserungsvorschläge offen und dankbar. Im übrigen ist der userArray bereits alphabetisch aufsteigend geordnet.
kingofbrain Geschrieben 14. April 2009 Geschrieben 14. April 2009 Den Fehler hast Du ja jetzt soweit schon selbst eingekreist: Dein Index ist nicht der Index im Array, sondern ein Zahlwert des Zeichens. Das ist natürlich insgesamt schon falsch. Wenn Du ein solches Mapping haben sillst, warum dann nicht einfach über eine Map? Peter
Ghostridah Geschrieben 14. April 2009 Autor Geschrieben 14. April 2009 Hmmm also danke für eure Hilfe. Ich hab das Problem jetzt geringfügig anders gelöst (Zahlen-Index) statt einen Tag mit so einem kleinen Problem zu verschwenden Es funktioniert jetzt einwandfrei.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden