Probléme boucle
Résolu/Fermé
peouts
Messages postés
10
Date d'inscription
mercredi 24 novembre 2010
Statut
Membre
Dernière intervention
31 décembre 2022
-
Modifié le 30 oct. 2017 à 08:23
walidyahiacherif @gmail.com - 4 nov. 2017 à 03:30
walidyahiacherif @gmail.com - 4 nov. 2017 à 03:30
4 réponses
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 1 nov. 2017 à 00:52
Modifié le 1 nov. 2017 à 00:52
Bonjour
Ca arrivé à la sixième iteration.. tu depasses les bornes de ton tableau.
(Première itération i=0)
Ton tableau a une taille de 7.. hors tu fais i+3
5+3 = 8.. tu es donc en dehors
edit : oui 4+3 = 7 > à l'indice max tu tableau qui est 6 ( de 0 à 6 = 7 valeurs )
Cordialement,
Jordane
Ca arrivé à la sixième iteration.. tu depasses les bornes de ton tableau.
(Première itération i=0)
Ton tableau a une taille de 7.. hors tu fais i+3
5+3 = 8.. tu es donc en dehors
edit : oui 4+3 = 7 > à l'indice max tu tableau qui est 6 ( de 0 à 6 = 7 valeurs )
Cordialement,
Jordane
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
30 oct. 2017 à 08:33
30 oct. 2017 à 08:33
Bonjour,
"voila le résultat aprés compilation"
Point de vocabulaire : ce que tu montres c'est le résultat de l'exécution.
"pourquoi il affiche 5 5 et pas 5 5 5 à la fin (...) avant d'afficher l'erreur"
La réponse est dans la question : c'est parce qu'il y a eu l'erreur que le programme s'est arrêté après 5 5 et n'a donc pas affiché 5 5 5.
Il faut décortiquer l'erreur pour en obtenir des informations utiles :
Je t'invites à afficher l'intégralité de ton tableau à chaque tour de boucle, ça te permettra de mieux suivre les modifications que tu effectues.
Par exemple avec
"voila le résultat aprés compilation"
Point de vocabulaire : ce que tu montres c'est le résultat de l'exécution.
"pourquoi il affiche 5 5 et pas 5 5 5 à la fin (...) avant d'afficher l'erreur"
La réponse est dans la question : c'est parce qu'il y a eu l'erreur que le programme s'est arrêté après 5 5 et n'a donc pas affiché 5 5 5.
Il faut décortiquer l'erreur pour en obtenir des informations utiles :
-
PracticeYourKnowledge.java:10
est la ligne de code qui pose problème, c'est à diretab[i+3] = 5;
dans ce cas. -
ArrayIndexOutOfBoundsException: 7
est la description de l'erreur qui indique que tu essayes d'accéder à la case 7 qui n'existe pas puisque le tableau a des cases numérotées de 0 à 6.
Je t'invites à afficher l'intégralité de ton tableau à chaque tour de boucle, ça te permettra de mieux suivre les modifications que tu effectues.
Par exemple avec
System.out.println(java.util.Arrays.toString(tab));
Jordane45,
merci pour ta réponse ainsi que KX,
Jordane 45 ce que je veux comprendre c'est pourquoi il a fait (5+3) qu'à parir de la 5eme itération, une fois 30 affiché ,que se passe il aprés chaque itération, désolé mais je suis un débutant extrême .
merci pour ta réponse ainsi que KX,
Jordane 45 ce que je veux comprendre c'est pourquoi il a fait (5+3) qu'à parir de la 5eme itération, une fois 30 affiché ,que se passe il aprés chaque itération, désolé mais je suis un débutant extrême .
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
31 oct. 2017 à 07:04
31 oct. 2017 à 07:04
5eme.iteration.. 5+3 ... Tu ne vois pas ?
Un indice... Le chiffre 5.
Un indice... Le chiffre 5.
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
31 oct. 2017 à 11:04
31 oct. 2017 à 11:04
"pourquoi il a fait (5+3) qu'à parir de la 5eme itération, une fois 30 affiché"
Il n'a jamais fait 5+3, la 5è itération c'est i=4, donc 4+3=7 d'où le message d'erreur ArrayIndexOutOfBoundsException: 7
Quant au 30 il est affiché à la 3è itération (10, 20, 30) donc il y a eu la 4è itération entre temps (celle qui affichait le premier 5) sans oublier la 5è itération qui plante.
Pour t'aider à compter il faudrait faire ce que je t'ai indiqué dans mon message d'hier et rajouter des affichages.
Il n'a jamais fait 5+3, la 5è itération c'est i=4, donc 4+3=7 d'où le message d'erreur ArrayIndexOutOfBoundsException: 7
Quant au 30 il est affiché à la 3è itération (10, 20, 30) donc il y a eu la 4è itération entre temps (celle qui affichait le premier 5) sans oublier la 5è itération qui plante.
Pour t'aider à compter il faudrait faire ce que je t'ai indiqué dans mon message d'hier et rajouter des affichages.
public static void main(String[] args) { int tab[]= {10,20,30,40,50,60,70}; for (int i = 0; i<tab.length; ++i) { System.out.println("tab=" + java.util.Arrays.toString(tab)); System.out.println("i=" + i); System.out.println("tab[i]="+tab[i]); tab[i+3] = 5; System.out.println("tab=" + java.util.Arrays.toString(tab)); System.out.println(); } }
peoutss
>
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
1 nov. 2017 à 00:21
1 nov. 2017 à 00:21
Merci les amis,
Je pense à zapper ce problème afin d'éviter de vous énerver daventage, peut étre que le temps me portera conseil j'arrive pas à comprendre pkoi il commencé à faire i+3 qu'à partir de 4 et pas à partir de 1.
j’essaie d'étre curieux afin bien comprendre le langage sachant que j'ai créé moi même ce problème en ajoutant le tab[i+3] = 5;
Je vous remercie pour votre temps chers.
Je pense à zapper ce problème afin d'éviter de vous énerver daventage, peut étre que le temps me portera conseil j'arrive pas à comprendre pkoi il commencé à faire i+3 qu'à partir de 4 et pas à partir de 1.
j’essaie d'étre curieux afin bien comprendre le langage sachant que j'ai créé moi même ce problème en ajoutant le tab[i+3] = 5;
Je vous remercie pour votre temps chers.
jordane45
Messages postés
38314
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
Modifié le 1 nov. 2017 à 00:51
Modifié le 1 nov. 2017 à 00:51
Ton tableau contient 7 valeurs (10,20... 70)
Il a donc une dimension de 6 ( l'indice 0 étant la première valeur.. le dernier indice sera 6 )
Dans ta boucle.... tu vas de i=0 jusqu'à i=7
tu affiche la valeur correspondant à l'indice
10 puis 20 etc...
Dans un même temps ... tu AFFECTES la valeur 5 à l'indice i+3
Donc :
première itération (i=0)
tu affiches 10
tu stockes 5 dans tab[3]
deuxième itération (i=1)
tu affiches 20
tu stockes 5 dans tab[4]
troisième itération (i=2)
tu affiches 30
tu stockes 5 dans tab[5]
quatrième itération (i=3)
tu affiches la contenu de tab[3] soit 5 (voir première itération)
et tu stockes 5 dans tab[3+3] =>6
cinquième itération i = 4
tu affiches la contenu de tab[4] soit 5 (voir deuxième itération)
et tu stockes 5 dans tab[4+3] =>7
étant plus grand que l'indice max de ton tableau... il crache...
est-ce plus clair ??
Cordialement,
Jordane
Il a donc une dimension de 6 ( l'indice 0 étant la première valeur.. le dernier indice sera 6 )
Dans ta boucle.... tu vas de i=0 jusqu'à i=7
tu affiche la valeur correspondant à l'indice
10 puis 20 etc...
Dans un même temps ... tu AFFECTES la valeur 5 à l'indice i+3
Donc :
première itération (i=0)
tu affiches 10
tu stockes 5 dans tab[3]
deuxième itération (i=1)
tu affiches 20
tu stockes 5 dans tab[4]
troisième itération (i=2)
tu affiches 30
tu stockes 5 dans tab[5]
quatrième itération (i=3)
tu affiches la contenu de tab[3] soit 5 (voir première itération)
et tu stockes 5 dans tab[3+3] =>6
cinquième itération i = 4
tu affiches la contenu de tab[4] soit 5 (voir deuxième itération)
et tu stockes 5 dans tab[4+3] =>7
étant plus grand que l'indice max de ton tableau... il crache...
est-ce plus clair ??
Cordialement,
Jordane