Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    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
    A[row][col] = 0;
    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?

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: Errore: java.lang.ArrayIndexOutOfBoundsException: 16

    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.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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

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

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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.