Problème d'Indice ArrayIndexOutOfBoundsException JAVA
Sarah
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai cet erreur quand je compile mon code :
for (int i = tabTri.length; i>=0; i--)
{
if (insert<tabTri[i] && insert>tabTri[i-1])
{
tabTri[i] = insert;
tabTri[i+1] = tabTri[i];
}
}
J'aimerais insérer un élément dans un tableau int déjà trié en parcourant par la fin.
Merci :)
J'ai cet erreur quand je compile mon code :
for (int i = tabTri.length; i>=0; i--)
{
if (insert<tabTri[i] && insert>tabTri[i-1])
{
tabTri[i] = insert;
tabTri[i+1] = tabTri[i];
}
}
J'aimerais insérer un élément dans un tableau int déjà trié en parcourant par la fin.
Merci :)
A voir également:
- Problème d'Indice ArrayIndexOutOfBoundsException JAVA
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Indice téléphonique - Guide
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
1 réponse
ArrayIndexOutOfBoundsException ce n'est pas une erreur que tu as à la compilation mais à l'exécution !
Les cases d'un tableau de taille n vont de 0 à n-1, cette exception indique que tu essayes d'accéder à une case qui n'existe pas. Remarque : l'exception doit indiquer quelle est la valeur de la case à laquelle tu essayes d'accéder.
Tu utilises tabTri[i], or avec ta boucle for tu initalises i avec la valeur tabTri.length, il faudrait que tu commences par l'indice tabTri.length-1
Par ailleurs, tu utilises tabTri[i-1], ce qui va là encore poser problème mais cette fois pour la valeur i=0 puisque tu vas chercher la case "-1" qui n'existe pas, il faut donc t'arrêter à la valeur 1.
Tu devrais donc avoir : for (int i=tabTri.length-1 ; i>=1; i--)
Remarque : en faisant tabTri[i] = insert; puis tabTri[i+1] = tabTri[i]; tu vas affecter la valeur "insert" sur les deux cases, le programme ne feras donc pas ce que tu veux.
Les cases d'un tableau de taille n vont de 0 à n-1, cette exception indique que tu essayes d'accéder à une case qui n'existe pas. Remarque : l'exception doit indiquer quelle est la valeur de la case à laquelle tu essayes d'accéder.
Tu utilises tabTri[i], or avec ta boucle for tu initalises i avec la valeur tabTri.length, il faudrait que tu commences par l'indice tabTri.length-1
Par ailleurs, tu utilises tabTri[i-1], ce qui va là encore poser problème mais cette fois pour la valeur i=0 puisque tu vas chercher la case "-1" qui n'existe pas, il faut donc t'arrêter à la valeur 1.
Tu devrais donc avoir : for (int i=tabTri.length-1 ; i>=1; i--)
Remarque : en faisant tabTri[i] = insert; puis tabTri[i+1] = tabTri[i]; tu vas affecter la valeur "insert" sur les deux cases, le programme ne feras donc pas ce que tu veux.
Merci beaucoup ! Ca a effectivement éxécuté mais du coup je compare pas l'élement d'insertion à l'indice 0 de mon tableau ?
:)
Il faut donc revoir ton algorithme en fonction de tes besoins pour toujours utiliser des indices valides.