/ / Java - Fehler in erweitert für Loop-Java-Arrays

Java - Fehler in erweitert für Loop - Java - Arrays

Ich habe gerade angefangen, Java zu lernen. Sehen Sie sich meinen Code an, um jedem Element eines 2D-Arrays 1 hinzuzufügen, indem Sie for-Schleife verwenden. Ich habe auch ein Bild meines Codes in Eclipse angehängt.Code für erweiterte for-Schleife

package multi_array;

public class MainClass {

public static void main(String args[]){
int array[][]={{1,2,3}, {4,5,6}, {7,8,9}};
add_1(array);
}

public static void add_1(int a[][]){
for(int[] a_row: a){
for(int i: a_row){
a_row[i]+=1;
}
}

for(int[] a_row: a){
for(int i: a_row){
System.out.print(a_row[i]+"t");
}
System.out.println("n");
}

}
}

Wenn ich jetzt versuche, das Programm auszuführen, bekomme ich eine Fehlermeldung. Ich habe auch das Bild der Fehlermeldung angehängt.Fehlermeldung

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at multi_array.MainClass.add_1(MainClass.java:12)
at multi_array.MainClass.main(MainClass.java:6)

Wie kann ich diesen Code korrigieren?

OK Freunde zuerst entschuldigen mich für meine schlechte Einrückung des Codes, schließlich ist dies meine erste Frage zu stackoverflow. Ich habe das richtige Ergebnis durch Ersetzen erhalten

for(int i: a_row){
a_row[i]+=1;
}

mit dem Code

for(int i=0; i<a_row.length; i++){
a_row[i]+=1;
}

Aber ich wollte nur wissen, ob ich mit foreach loop nur das gewünschte Ergebnis erzielen kann.

Antworten:

0 für die Antwort № 1

a_row enthält alle Zeilen des zweidimensionalen Arrays und Sie sind Zugriff a_row[i] woher i Wert der Zeile und Sie haben keine a_row[3]
in Ihrem Code wie folgt ändern

 for(int[] a_row: a){
for(int index=0; index < a_row.length; index++){
a_row[index]+=1;
}
}

for(int[] a_row: a){
for(int i: a_row){
System.out.print(i+"t");
}
System.out.println("n");
}

0 für die Antwort № 2

Dein Problem ist das i hat einen größeren Wert als Ihr Array Einträge hat.

Sie haben dieses Problem erhalten, weil Sie das tatsächliche Element des Arrays in Ihrer Schleife als Index verwenden.

Wenn ich mir Ihren Methodennamen anschaue, möchte ich, dass Sie einfach jede ganze Zahl in Ihrem Array erhöhen.

Sie können Ihren Code dadurch korrigieren:

    for(int[] a_row: a)
{
for(int i:a_row)
{
i += 1;
}
}

Ich denke, Sie sollten lesen, wie Foreach-Loops funktionieren. Es gibt bereits eine gute Frage mit guten Antworten zu SO zu diesem Thema: Hier.