Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

2D Array mit Buchstaben-Index initialisieren

Empfohlene Antworten

Veröffentlicht

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?

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

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.

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.

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

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.