Erste Schritte Fehlermeldung bei Array-Programm

Lieger

Mitglied
Hi zusammen,

Vorweg: Ich bin der blutigste Anfänger in Sachen java den es je gegeben hat :bloed:, also seit bitte nicht soo hart zu mir. Es ist eine meiner ersten Java-Grundkurs-Buch-Aufgaben die ich löse, ausserdem bin ich erst 13 Jahre alt.🙂

Zu meinem Problem:
Ich habe ( habe ich jedenfalls versucht 😀 ) ein mehrdimensionales Feld erstellt, das aus 31 Strings besteht, die wiederum 24 Strings beinhalten. Die Aufgabe wäre nach dem noch lange nicht fertig, aber nur um sicher zu sein, dass alles stimmt habe ich mal einen String initialisiert und wollte ihn ausgeben. Doch dann kam die Fehlermeldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 24
at Mehrdimensionale_Felder.main(Mehrdimensionale_Felder.java:10)

Quellcode:

Java:
public class Mehrdimensionale_Felder {
	public static void main (String arg[]){
		String [] [] termine;
		termine = new String [31] [];
		int k;
		for (int i = 0; i < termine.length; i++){
			termine[i] = new String [24];
		for (k = 0; k < termine[i].length; k++);
			termine[i][k] = "";
			
		}
		termine [1][1] = "hallo";
		System.out.println(termine[1][1]);

	}
}


Es wäre sehr nett wenn mir jemand erklären könnte was ich falsch gemacht habe, bin halt noch n'Noob 😀 .

Gruss
Lieger

PS: Mein erster Post, Yaaaaaay! 😀

(Falls diese Frage im falschen bereich gepostet ist, entschuldige ich mich und bitte einen Moderator es zu moven)
 
Also du hast das 2D Array am Anfang falsch deklariert.
Du musst schon beim anlegen beide Größen bestimmen!

Java:
public class Mehrdimensionale_Felder {
    public static void main (String arg[]){
        String [] [] termine;
        termine = new String [31] [24];
        int k;
        for (int i = 0; i < termine.length; i++){
        for (k = 0; k < termine[i].length; k++);
            termine[i][k] = "";
            
        }
        termine [1][1] = "hallo";
        System.out.println(termine[1][1]);
 
    }
}

Die beiden Anzahlen der Felder sind nämlich Fix, du kannst nicht sagen
das feld[0] dann noch 10 felder als 2d hat und feld[1] nur 5 oder so.
Dh. alle Felderanzahlen sind gleich groß, jedes der 31 Felder hat 24 weitere.
Deshalb muss das auch am Anfang gleich deklariert werden.
 
Also du hast das 2D Array am Anfang falsch deklariert.
Du musst schon beim anlegen beide Größen bestimmen!

Java:
public class Mehrdimensionale_Felder {
    public static void main (String arg[]){
        String [] [] termine;
        termine = new String [31] [24];
        int k;
        for (int i = 0; i < termine.length; i++){
        for (k = 0; k < termine[i].length; k++);
            termine[i][k] = "";
            
        }
        termine [1][1] = "hallo";
        System.out.println(termine[1][1]);
 
    }
}

Die beiden Anzahlen der Felder sind nämlich Fix, du kannst nicht sagen
das feld[0] dann noch 10 felder als 2d hat und feld[1] nur 5 oder so.
Dh. alle Felderanzahlen sind gleich groß, jedes der 31 Felder hat 24 weitere.
Deshalb muss das auch am Anfang gleich deklariert werden.

Nein! :rtfm:
 
Vielen Dank, das nenn ich mal eine gute Antwort 🙂
Aber wieso ist es nicht egal ob ich die jetzt so oder so erstelle? Nur weil alle gleich sind?

EDIT: Hab die 2. Antwort gesehen, is also geklärt.

Danke an alle
 

Zurück
Oben