Ghostridah Geschrieben 14. April 2009 Teilen 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 14. April 2009 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DominikJ Geschrieben 14. April 2009 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ghostridah Geschrieben 14. April 2009 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 14. April 2009 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ghostridah Geschrieben 14. April 2009 Autor Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.