Ciao a tutti, sto creando un programma che simuli il famoso gioco "campo minato", dopo aver creato la classe CampoMinato (che compila correttamente), ho creato un main per testare delle funzioni, e prendendo degli argomenti da linea di comando viene generata un eccezione di tipo ArrayIndexOutOfBoundsException e non capisco il perchè.

vi posto il codice:

classe CampoMinato

codice:
public class CampoMinato {
	
	private int[][] Matr; //Matrice che rappresenta il campo
	private int righe; //Numero righe
	private int colonne; //Numero colonne
	private int mine; //Numero mine
	private int celleScoperte; //Numero celle scoperte
	
	// campi statici usati per la rappresentazione interna del contenuto di una cella
	
	private static final int NONSC = -1; //La cella (r,c) non è ancora stata scoperta
	private static final int MINA = -2; //La cella (r,c)contiene una mina
	
	// campi statici che definiscono i caratteri usati nella stampa
	
	private static char NONSC_CHAR = '-'; //Carattere per rappresentare una cella non scoperta
	private static char MINA_CHAR = '*'; //Carattere per rappresentare una mina
	
	//COSTRUTTORI
	
	public CampoMinato(int r, int c) {
		righe = r;
		colonne = c;
		mine = 0;
		celleScoperte = 0;
		Matr = new int[righe][colonne];
		for(int i = 0; i < righe; i++) {
			for(int j = 0; j < colonne; j++) {
				Matr[r][c] = NONSC;
			}
		}
	}
	
	public CampoMinato(int dim) {
		this(dim, dim);
	}
	
	//METODI
	
	public int getRighe() {
		return righe;
	}
	
	public int getColonne() {
		return colonne;
	}
	
	public int getMine() {
		return mine;
	}
	
	public int getCelleScoperte() {
		return celleScoperte;
	}
	
	public int getCelleDaScoprire() {
		return righe * colonne - celleScoperte;
	}
	
	public static void setMinaChar(char ch) {
		MINA_CHAR = ch;
	}
		
	public static void setNonscChar(char ch) {
		NONSC_CHAR = ch;
	}
	
	private void stampa(char cMina) {
		System.out.print("  ");
		for(int c = 0; c < colonne; c++) {
			System.out.printf(" %2d", c);
		}
		System.out.println();
		
		for(int r = 0; r < righe; r++) {
			System.out.printf("%2d", r);
			
			for(int c = 0; c < colonne; c++) {
				if(Matr[r][c] == NONSC)
					System.out.printf(" %2c", NONSC_CHAR);
				else
					if(Matr[r][c] == MINA)
						System.out.printf(" %2c", cMina);
					else
						System.out.print("  " + Matr[r][c]);
			}
			System.out.println();
		}
		System.out.println();
	}
	
	public void stampaSenzaMine() {
		this.stampa(NONSC_CHAR);
	}	
	
	public void stampaTutto() {
		this.stampa(MINA_CHAR);
	}
}
main

codice:
import java.lang.*;

public class Esercizio1 {
	
	public static void main(String[] args) {
					
		int r = Integer.parseInt(args[0]);
		int c = Integer.parseInt(args[1]);
		
		CampoMinato campo = new CampoMinato(r,c);
		
		campo.stampaTutto();
		
		campo.setNonscChar('?');
		
		campo.stampaTutto();
	}
}
Grazie.