1. Description du problème : restez dans une boucle infinie, imprimez à plusieurs reprises jusqu'à ce qu'une erreur se produise
2.Codes associés
int[] Aarray = new int[]{2,4,5,6,2};
int[] Barray = new int[]{3,6,2,4,6};
for (int i = 0 ;i < 10 ;i ++ )
{
if (i < 5)
{
System.out.print(Aarray[i] + "\t");
}
else
{
i -= 5;
System.out.print(Barray[i] + "\t");
}
}
Quand i = 1, 2, 3, 4, n'en parlons plus, imprimons 1 2 3 4
Quand i = 5, entrez le bloc d'instructions else
i -= 5, qui est i = i-5. le résultat est i = 0, alors i++
Ensuite, je recommence à boucler à partir de 1. La condition de terminaison de la boucle for i < 10 ne peut jamais se terminer
Il y aura des fantômes lorsque vous sauterez. . . .
i -= 5;
Est-ce une faute de frappe ?À chaque passage dans la boucle,
i++
把i
加 1,但是i -= 5
; 又把i
diminue de 5.Lorsque
i=5, si ne tient pas, entrez else,
finish i -= 5 ; le résultat est i=0
puis quittez else, après i++, i=1 ; = 5 heures
...
Simple, vous le comprendrez après avoir parcouru le programme dans votre esprit. Au début, i=0, qui est inférieur à 5, puis i++ atteint 1, continuez à être inférieur à 5, et sortez, et continuez comme si. ceci jusqu'à ce que i=5, alors i<5. Si elle n'est pas établie, prenez la branche else, i-=5 ; i est à nouveau inférieur à 0, puis il commence à entrer dans la boucle suivante comme au début, il y a donc un boucle infinie
Si vous regardez la situation de chaque valeur de i, cela sera clair en un coup d'œil. Quand i>5, i entre else, à ce moment-là, i redevient 0, ce qui signifie que je n'atteindrai jamais la fin de i>. ;10. Conditions de boucle
La logique est fausse. Après avoir ajouté à 6, soustrayez à nouveau 5, revenant à 1, puis ajoutez 1 à chaque fois. Après avoir ajouté à 6, soustrayez à nouveau 5, revenant à 1, et le cycle continue.
Problème de logique, boucle infinie
Pour ce genre de question, il est recommandé de trouver un livre d'introduction ou de regarder une vidéo d'introduction de 10 minutes