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
maincodice: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); } }
Grazie.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(); } }

Rispondi quotando

