Zum Inhalt springen

2D Array mit Buchstaben-Index initialisieren


Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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

Geschrieben

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.

Geschrieben

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.

Geschrieben

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

Geschrieben

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.

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...