HTML.it è il sito italiano del web publishing

[JAVA] Errore: java.lang.ArrayIndexOutOfBoundsException



scegli un altro forum
    Indietro   Ricarica   Avanti Invia una risposta

Autore
Discussione     
Carlitos84
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 53


ICQ:

MSN:

Skype:


Errore: java.lang.ArrayIndexOutOfBoundsException: 16
Ragazzi, devo chiedervi una mano..in questo codice:
codice:
if(a[i]!=0 && b[i]==0){
      for(int row = startRange; row < rangeDirezioni[i]; row++){
           int col = 0;
           for(int p = m-1; p >= 0; p--){ 
                 for(int y = m-1; y >= 0; y--){ 
                            for(int x = 0; x < n; x++){ 
                                  if(y == p)   
                                      A[row][col] = 1;
                                  else 
                                      A[row][col] = 0; 
                                  col++;     
                             }
                  }
            } 
      }   
}

dove:
startDirezioni = 0;
rangeDirezioni[i] = 4;
m = n = 4;
mi restituisce l'errore alla riga
Citazione:
A[row][col] = 0;
Citazione:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
ma non riesco a capire il motivo dato che in un pezzetto di codice precedente fila tutto liscio e l'unica cosa che cambia da questo è l'inserimento del for contente p.
Qualcuno sprebbe aiutarmi per piacere?

Segnala ad un moderatore | IP: Collegato | Permalink

Carlitos84 è offline Old Post 03-07-2012 15:42
Clicca qui per vedere il profilo dell'utente Carlitos84 Clicca qui per inviare all'utente Carlitos84 un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Carlitos84 Aggiungi l'utente Carlitos84 alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Kaamos
Utente di HTML.it



Registrato il: Dec 2009

Provenienza: Genova

Messaggi: 580


ICQ :

MSN :

Skype :


Re: Errore: java.lang.ArrayIndexOutOfBoundsException: 16
Citazione:
Originariamente inviato da Carlitos84
Ragazzi, devo chiedervi una mano..in questo codice:
codice:
if(a[i]!=0 && b[i]==0){
      for(int row = startRange; row < rangeDirezioni[i]; row++){
           int col = 0;
           for(int p = m-1; p >= 0; p--){ 
                 for(int y = m-1; y >= 0; y--){ 
                            for(int x = 0; x < n; x++){ 
                                  if(y == p)   
                                      A[row][col] = 1;
                                  else 
                                      A[row][col] = 0; 
                                  col++;     
                             }
                  }
            } 
      }   
}

dove:
startDirezioni = 0;
rangeDirezioni[i] = 4;
m = n = 4;
mi restituisce l'errore alla riga ma non riesco a capire il motivo dato che in un pezzetto di codice precedente fila tutto liscio e l'unica cosa che cambia da questo è l'inserimento del for contente p.
Qualcuno sprebbe aiutarmi per piacere?


Quello startRange nel for esterno chi è? Perché vedo che tu ci hai dato invece il valore di startDirezioni... visto che dici che in un altro punto del codice il ciclo funziona magari hai sbagliato qualche copia e incolla.

Segnala ad un moderatore | IP: Collegato | Permalink

Kaamos è offline Old Post 03-07-2012 16:12
Clicca qui per vedere il profilo dell'utente Kaamos Clicca qui per inviare all'utente Kaamos un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Kaamos Aggiungi l'utente Kaamos alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
LeleFT
Moderatore di Programmazione



Registrato il: Jun 2003

Provenienza:

Messaggi: 14529


ICQ : 85781035

MSN : leleft@libero. it

Skype : leleft


Fatti stampare, prima dell'if interno, i valori di row e col... quel che è certo è che vai fuori limite e un suggerimento potrebbe essere quel "col++" che hai messo fuori dall'if, che viene eseguito sempre, per ciascuna iterazione del ciclo più interno...

Facile che "col" arrivi a 16 e il tuo array non abbia 16 elementi.


Ciao.


__________________
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Segnala ad un moderatore | IP: Collegato | Permalink

LeleFT è offline Old Post 03-07-2012 16:13
Clicca qui per vedere il profilo dell'utente LeleFT Clicca qui per inviare all'utente LeleFT un messaggio privato Visualizza ulteriori messaggi scritti dall'utente LeleFT Aggiungi l'utente LeleFT alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Carlitos84
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 53


ICQ :

MSN :

Skype :


Grazie ragazzi!!
@kaamos, scusa, ho fatto proprio un errore di copia e incolla, è startRange = 0 non startDirezioni.
@LeleFT, ok adesso provo a fare cosi.

Segnala ad un moderatore | IP: Collegato | Permalink

Carlitos84 è offline Old Post 03-07-2012 16:28
Clicca qui per vedere il profilo dell'utente Carlitos84 Clicca qui per inviare all'utente Carlitos84 un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Carlitos84 Aggiungi l'utente Carlitos84 alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Carlitos84
Utente di HTML.it



Registrato il: Jun 2012

Provenienza:

Messaggi: 53


ICQ :

MSN :

Skype :


Si esatto, l'errore era proprio in col che arrivava fino a 16..
ho risolto ponendo un
Citazione:
if(col < m*n)
all'interno del for più annidato, quello che, tra le istruzioni, contiene l'incremento di col, ovvero col++

Segnala ad un moderatore | IP: Collegato | Permalink

Carlitos84 è offline Old Post 03-07-2012 16:52
Clicca qui per vedere il profilo dell'utente Carlitos84 Clicca qui per inviare all'utente Carlitos84 un messaggio privato Visualizza ulteriori messaggi scritti dall'utente Carlitos84 Aggiungi l'utente Carlitos84 alla tua lista degli utenti amici Modifica / Cancella il messaggio Rispondi quotando   Torna su
Tutte le ore sono con fuso orario CET. Ora sono le 02:30.     

    Ultima discussione   Prossima discussione Invia una risposta
Versione per la stampa | Invia il thread via email | Ricevi aggiornamenti sul thread | Scarica il thread
 

Cerchi un argomento specifico e hai fretta? Usa il motore di ricerca