# Warum indexOutOfBoundsException(Matritzen)



## DaSt (17. Mrz 2016)

Hallo,

die Aufgabe lautet eine Matrix mit 0 zu füllen via der Methode Init() - die Methode Print() soll die Matrix dann ausgeben. Ich erhalte jeweils in der 2ten for-Schleife eine indexOutOfBoundsException, aber warum?


```
public class Matrix {
    int n, m;
   int[][] mtx = new int[n][m];

   public Matrix(int n,int m){  
     this.n=n;
     this.m=m;  
   }

   public void Print() {
     for (int i = 0; i < n; i++) {
       for (int y = 0; y < m; y++) {
         System.out.println(mtx[i][y]);
       }
       System.out.println();
     }
   }

   public void Init() {  
     for (int i = 0; i < n; i++) {
       for (int y = 0; y < m; y++) {
         mtx[i][y]=0;
       }
     }
   }
}/code]

Danke
```


----------



## njans (17. Mrz 2016)

int[][] mtx = new int[n][m];

Die Initialisierung sollte dann erfolgen, wenn du m und n auch Werte zugewisen hast: entweder im Konstruktor oder bei init.


----------



## DaSt (17. Mrz 2016)

Vielen Dank, jetzt gehts


----------



## DaSt (18. Mrz 2016)

Die nächste Aufgabenstellung lautet, ich soll die Matrix per Hand einlesen. Wen ich nur 1ne einlese funktioniert es, sobald ich eine 2te einlesen will kommt :

"
Exception in thread "main" java.util.NoSuchElementException
   at java.util.Scanner.throwFor(Unknown Source)
   at java.util.Scanner.next(Unknown Source)
   at java.util.Scanner.nextInt(Unknown Source)
   at java.util.Scanner.nextInt(Unknown Source)
   at Matrix.Input(Matrix.java:50)
"

Mein code zum einlesen:


```
public void Input(){
   
     Scanner sc = new Scanner(System.in);
   
     for(int i =0; i<n; i++){
       for(int y=0; y<m; y++){
         System.out.println("Wert "+i+" "+y+" "+  "eingeben");
         mtx[i][y]=sc.nextInt();
       }
     }
     sc.close();
   
   }
```

Warum kann ich die 2te nicht einlesen?

Danke


----------



## DaSt (18. Mrz 2016)

Habs selber gefunden. 
Das 
	
	
	
	





```
sc.close();
```
 war das Problem. Ohne funktionierts


----------

