[Java] Array Index Out of Bounds

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von osiris, 6. Dezember 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 6. Dezember 2010
    Array Index Out of Bounds

    Hallo,

    ich habe ein kleines Problem.

    Und zwar soll ich ein mehrdimensionales Array (quasi eine Matrix) mit Werten 0 & 1 füllen lassen.

    Alles kein Problem, Ausgabe stimmt auch.

    Darin soll die kleinste Teilmatrix bestehend aus 1er gefunden werden.
    Dies soll durch ein zweites Array realisiert werden.

    Also kopiere ich den Array a in Array b.
    Jetzt soll folgendes geschehen:
    B wird von rechts unten her aufgebaut & der Wert von b[i,j] entsteht aus a[i,j], b[i+1,j], b[i,j+1], b[i+1,j+1]

    Habe mal grob folgendes gemacht:

    for (int i = b.length-1; i > 0; i--){
    for (int j = b.length-1; j > 0; j--){
    b[j] = a[j] + b[i+1][j] + b[j+1] + b[i+1][j+1];
    }
    }

    Wenn es jetz diesen Nachbarn nicht gibt, soll eine 0 verwendet werden.

    Wie setze ich das am Besten um?

    Ich hab mir gerade gedacht:
    if (i = n){
    i+1 = 0;
    }

    Allerdings kommt ja erst nachher die Zuweisung (b[j] = ....).

    Steh da gerade an, bitte um Hilfe/einen Hinweis!
     
  2. 6. Dezember 2010
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Array Index Out of Bounds

    also ich würds so machen, dass du die for schlaufen bei b.length-2 starten lässt, und die erste zeile /bzw. spalte mit einer einfachen formel füllst (wenn ich das richtig verstandn habe kannst du den wert oben links auf 0 setzen, dann die zeile immer die zwei nebeneinanderliegenden elemente nehmen und spalte die beiden übereinanderliegenden, wobei du eben das ganz links, bzw das ganz oben schon aufgefüllt hast. dann kannst du mit deinen 2 schlaufen durchgehen und es sollte kein prob darstellen.

    veranschaulicht:

    Bild

    mfg
     
  3. 6. Dezember 2010
    AW: Array Index Out of Bounds

    Hmn ich glaube, ich bin mit meiner Erklärung nicht hingekommen, noch ein Versuch:

    Also das erste Array wird mit 0 + 1 gefüllt, sodass eine Matrix aus 0 + 1 entsteht, beispiel:

    0 0 0 1
    0 1 1 0
    0 1 1 1
    1 1 1 0

    wäre also eine 4*4 Matrix.

    Mit hilfe der zweiten Matrix soll nun die größte Teilmatrix angegeben werden & wie lange diese ist, Beispiellösung hier wäre demnach:
    2 2 2
    also 2 2 für i = 2, j = 2 und kantenlänge 2.

    Was mit dem Lösungsansatz von dir nicht realisierbar ist, oder habe ich gerade einen Gedankenfehler?

    Ich hab das ganze einfach mal weiter gedacht und denke, da muss eig. nur eine Fallunterscheidung her:
    Wenn i = n & j = n, dann bleibt die Zahl dieselbe.
    Wenn i = n & j = n-1, dann b[j] = a[j] + b[0][j] + b[j+1] + b[0][j+1]. Hier wird also Quasi nur i+1 mit 0 ausgetauscht.
    Das selbe für i = n-1 & j = n;
    und wenn beide nicht n sind einfach normal zusammenzählen.

    Allerdings kommt wieder Array Index Out of Bounds.

    E2:/

    Gerade so drüber nachgedacht. Wenn ich da 0 reinschreibe, ist das nicht einfach + nix sondern der Wert an der Stelle 0.

    Müsste also folgendermaßen machen:
    Wenn i = n & j = n-1, dann b[j] = a[j] + b[j+1]. Und umgekehrt. Stimmt aber auch nicht
     
  4. 6. Dezember 2010
    AW: Array Index Out of Bounds

    Ich hab zwar deine Aufgabe nicht so richtig verstanden (ist schon spät) aber nützt dir vielleicht was:

    Code:
     int[][] matrix = {
     {0, 0, 1, 1},
     {0, 1, 1, 0},
     {0, 1, 1, 1},
     {1, 1, 1, 0}};
     int[][] matrixHelp = {{0, 0, 0, 1}, {0, 1, 1, 0}, {0, 1, 1, 1},{1, 1, 1, 0}};
    
    
     for (int spalten = (matrix.length - 1); spalten >= 0; spalten-- ) {
     for (int zeilen = (matrix[spalten].length - 1); zeilen >= 0; zeilen--) {
     //System.out.println(String.valueOf(matrix[spalten][zeilen]));
     if (matrix.length > (spalten+1) && matrix[0].length > (zeilen+1)) {
     matrixHelp[spalten][zeilen] = matrix[spalten][zeilen] + matrix[spalten+1][zeilen] + matrix[spalten][zeilen+1] + matrix[spalten+1][zeilen+1];
     }
     }
     }
     
  5. 7. Dezember 2010
    AW: Array Index Out of Bounds

    So, irgendwo liegt der Hund begraben, die Angabe ist definitiv falsch.

    Von daher lasse ich die Übung jetzt nun so, geb das ab & fertig.
    Wenn die Professoren schonmal die Angabe falsch machen, soll ich dann ihre Schweinerei ausbessern?


    BW's kommen raus, schade, trotzdem danke an alle!
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.