Warum indexOutOfBoundsException(Matritzen)

DaSt

Bekanntes Mitglied
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?

Java:
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
 
Zuletzt bearbeitet von einem Moderator:

njans

Top Contributor
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

Bekanntes Mitglied
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:

Code:
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
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Oben