ArrayIndexOutOfBoundsExeption
Résolu
airliquide
-
airliquide -
airliquide -
Bonjour,
Bonjour voila pour mon ecole je doit bosse avec une bdd sur android avec java .
Pour cela j ai utilisé des classes diverses et creé des moyens d y aceder en l occurence via des tableau et des curseurs .
Et arrive un moment ou je doit transformer un curseur en tableau d objet .
Je fait don ceci
Et la j obtient un ArrayOutOfBound .
Mais d ou cela viens .
J ai conpris qu il y avait un probleme avec les indices des tableau mais ou ??
Merçi de votre aide
Bonjour voila pour mon ecole je doit bosse avec une bdd sur android avec java .
Pour cela j ai utilisé des classes diverses et creé des moyens d y aceder en l occurence via des tableau et des curseurs .
Et arrive un moment ou je doit transformer un curseur en tableau d objet .
Je fait don ceci
Skatepark[] tabspot = new Skatepark[c.getCount()]; while (c.isLast()==false) { tabspot[i]=cursorToNom(c); c.moveToNext(); i++; } return(tabspot);
Et la j obtient un ArrayOutOfBound .
Mais d ou cela viens .
J ai conpris qu il y avait un probleme avec les indices des tableau mais ou ??
Merçi de votre aide
4 réponses
Normalement tu as une valeur associée à ton ArrayIndexOutOfBoundsExeption, il faut que tu la compare avec la taille de ton tableau.
Je vois deux sources d'erreurs possibles :
* i n'est pas initialisé à 0
* on fait plus de c.moveToNext() que la valeur c.getCount() de départ, par exemple en modifiant c dans la méthode cursorToNom
Autre méthode, mais je ne sais pas si les Collection sont supportés sur Androïd :
Je vois deux sources d'erreurs possibles :
* i n'est pas initialisé à 0
* on fait plus de c.moveToNext() que la valeur c.getCount() de départ, par exemple en modifiant c dans la méthode cursorToNom
int n = c.getCount(); Skatepark[] tabspot = new Skatepark[n]; for (int i=0; i<n; i++, c.moveToNext()) tabspot[i]=cursorToNom(c); return(tabspot);
Autre méthode, mais je ne sais pas si les Collection sont supportés sur Androïd :
LinkedList<Skatepark> liste = new LinkedList<Skatepark>(); while (!c.isLast()) { liste.add(cursorToNom(c)); c.moveToNext(); } return liste.toArray(new Skatepark[liste.size()]);La confiance n'exclut pas le contrôle
merci d avoir pris le temps de me repondre
ben dans les deux cas j ai bien mon i=0 et je fait exactement le bon nombre d iteration .
Donc je n y comprend rien . De plus je n ais pas de valeur associée a cette exeption .
ben dans les deux cas j ai bien mon i=0 et je fait exactement le bon nombre d iteration .
Donc je n y comprend rien . De plus je n ais pas de valeur associée a cette exeption .
ouep peut etre j experimente je verrais ...
j ai changé quelques methodes mais l effect tunnel me met de plus en plus oeillères ...
j ai changé quelques methodes mais l effect tunnel me met de plus en plus oeillères ...
j ai changé mes methodes et avec ma classe Junit de test je viens de m appercevoir que cette ligne ne renvoi pas de donnée pourtant dans ma bdd tout est ok
public Skatepark[] getgeopointAllSpots() { //Récupère dans un Cursor les valeur Cursor c = bdd.query(TABLE_SPOTS ,null, null, null, null, null, null); if (cursorToNom(c)==null) { Log.e("essai", "ereur no data found"); } return(cursorsToNom(c)); }