IndexoutofBoundException

DaSt

Bekanntes Mitglied
Hallo,

bekomme an folgender Stelle eine I.o.o.B.Exception. Warum?

Java:
public class Matrix {
    int n=0; //zeilen
    int m=0; //spalten
   
    public Matrix(int n, int m){
        this.n =n;
        this.m =m;
    }
   
    int arr[][] = new int[n][m];
     
    //Matrix mit 0 initialisieren
    public void Init(){
       
        for(int i=0; i<n; i++){
            for(int y=0; y<m; y++){
                this.arr[i][y]=0; //Hier kommt die Exception
            }
        }
       
    }

Aufruf in der Main:

Java:
...
Matrix ma = new Matrix(3,3);
ma.Init();
//Es soll also eine 3*3 Matrix erstellt werden und alle Werte mit 0 initialisiert

Danke
 

Soloeco

Aktives Mitglied
Dem kann ich so nur zustimmen. Das Programm läuft schließlich von oben nach unten ab und somit wird das zwei dimensionale Array erst nach Festlegung der Matrix Größe initialisiert.
 

DaSt

Bekanntes Mitglied
ok danke, ist mir auch gerade aufgefallen. Da ich ein Jahr nicht mehr mit Java gearbeitet habe, bin ich eingerostet. Wie weise ich dem Array im Kunstruktor die größe zu? (Also von der Syntax her, will gerade nicht klappen)
so ist es ja ausserhalb nicht mehr sichtbar
Java:
public Matrix(int n, int m){
        this.n =n;
        this.m =m;
        int arr[][]= new int[n][m];
       
    }
 

Robat

Top Contributor
Genau so wie du es bei der globalen Variable auch gemacht hast ;)

Java:
private int[][] arr;

public Test()
{
     arr = new int[2][2];
}

Gruß Robert :)
 
Zuletzt bearbeitet:

Neue Themen


Oben