Ciao raga, mi sto esercitando con java , e non riesco a fare questi metodo , o almeno , mi dà errore.
Il metodo consiste in questo:
Per informazione MatriceDicaratteri è un'array bidimensionale quadrato di char.
/* Restituisce un oggetto di tipo MatriceDiCaratteri che rappresenta la sottomatrice dell’oggetto ricevente (this) che inizia nell’elemento (i,i) e finisce nell’elemento (j,j). Si può assumere che gli indici i e j siano indici validi. */
public MatriceDiCaratteri estraiSottomatrice(int i, int j){…}
Quindi devo fare una sottomatrice partendo dall'indice di riga-colonna i, e finire nell'indice di riga-colonna j;
Ho fatto in questo modo , ma probabilmente c'è un'errore in qualche for:
public MatriceDiCaratteri estraiSottomatrice(int i, int j){
//In questo for vedo quanto deve essere grande la mia nuova matrice, in particolare vedo di quante righe-colonne deve
essere fatta
int dim=0;
for(int k=i;k<=j;k++){
for(int z=i;z<=j;z++){
}
dim++;
}
//A questo punto procedo alla copia dei valori della matrice nel nuovo array(w)
int riga=0;
int colonna=0;
char[][] w=new char[dim][dim];
for(int k=i;k<=j;k++){
for(int z=i;z<=j;z++){
w[riga][colonna]=mat[k][z];
colonna++;
}
riga++;
}
//Creo l'oggetto con il nuovo array
MatriceCaratteri t = new MatriceCaratteri(w);
return t;
}
In esecuzione , mettiamo che la mia matrice iniziale sia 5x5 , e metto come indici 1 e 3 , mi da come errore :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
Probabilmente l'errore è su uno dei for , magari scorro qualcosa di troppo , non so , qualcuno può aiutarmi?