PDA

Visualizza la versione completa : [java]Richiesta correzione errore su un if


YuZzoLo
04-02-2005, 22:12
.
.
.
.
.



int cord[][] ={ {3,0}, // dichiarazione vettore delle coordinate
{-3,0},
{0,3},
{0,-3},
{2,2},
{2,-2},
{-2,2},
{-2,-2}
};
int xn;
int yn;
boolean trovato=false;
int i=0;
while ((trovato==false)&&(i<8)){ //ricerca dei valori
xn= x+ cord[i][0];
yn= y+ cord[i][1];
if(((xn>0)&&(xn<10))||((yn>0)&&(yn<10))){
if (mat[x][y]==(mat[xn][yn]-1)){
trovato=true;
System.out.println ("coordinate del nuovo valore "+ xn+ " " +yn);
}
i++;
}
else
{
i++;
}
}
.
.
.
.


Mi da un errore di ArrayIndexOutOfBoundsException in questa linea di codice:
if(((xn>0)&&(xn<10))||((yn>0)&&(yn<10))){
....


se su xn e yn invece di mettere un semplice ">" metto un ">="

come mai?

namek
04-02-2005, 23:01
Mi pare che il tuo codice sia solo una parte di tutto quello che hai scritto, da quello che posso capire hai una matrice di 10 x 10, allora i suoi indici vanno da 0 a 9 compresi gli estremi, tu se gli dici di andare da 0 a 10 compresi gli estremi vai fuori dell'array, visto che la matrice non è altro che un array multidimensionale.
prova a dirgli (>= 0 e <= 9) oppure (>= 0 e < 10).
Praticamente il primo elemento in un vettore ha indice 0, per cui il decimo ha 9.
Spero di esserti stato di aiuto.

:ciauz:

YuZzoLo
04-02-2005, 23:27
si namek è una matrice 10 x 10
non ho riportato il codice restante perchè ero sicuro che fosse corretto

l'errore l'ho trovato

if(((xn>0)&&(xn<10))||((yn>0)&&(yn<10))){

if(((xn>=0)&&(xn<10))&&((yn>=0)&&(yn<10))){


grazie :)

Loading