[JAVA]Chercher dans une boucle

Le problème exposé dans ce sujet a été résolu.

Bonjour, j’avais suivi le cour de java sur openclassrooms il y a environs 1 mois, j’ai arrêté pendant quelques semaines à cause de l’école… et la je reprends java. Mais.. j’ai toujours cette quéstion. En faite, j’essaye de chercher un élément dans un tableau, les éléments (chiffres ici) sont 1,2,3,4,5,6,7,8.. tous marche jusqu’à que j’essaye de chercher le 8, alors la ERROR, la seul solution que j’ai trouvé c’est d’ajouter un autre nombre au tableau par exemple 9 mais si j’essaye de chercher celui-çi, ERROR encore une fois :(

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
    System.out.println("Rentrez un nombre");

    for (int reponse : tableau)
    {
        reponse  = sc.nextInt();
        {
            if (reponse != tableau[reponse]){

                System.out.println("In");
                System.out.println(reponse);
            }else{

                System.out.println("Not in");
            }   
        }
    }

``` Merci :)

Salut,

L’erreur est en faite très bête, tu itère sur ton tableau avec un foreach, ici ce serais plus logique de faire un for si tu cherche l’index de cette élément. Et là où ça plante c’est que ton élément de foreach s’appel reponse et la variable où tu récupère la valeur de l’utilisateur s’appel aussi reponse (donc réafectation de valeur), du coup c’est normal que ça plante si tu tante d’accédé à un index qui n’existe pas.

+2 -0

Comme ceci:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
boolean found = false;
for (int i = 0; i < tableau.length; i++)
    {
        reponse  = sc.nextInt();
        {
            if (reponse == tableau[i]){

                System.out.println("In");
                System.out.println(reponse);
                found = true;
                break;
            }
        }
    }
if(!found) {

                System.out.println("Not in");
            }   
+0 -0

Salut !

Très simple :

1
for (int i = 0; i < tableau.length; i++)

Est traduisible par :

"Pour tous les i allant de 0 à la taille du tableau". La taille du tableau n’est pas infinie et n’est pas modifiée dans la boucle, donc la boucle n’est pas infinie.

Salut !

Très simple :

1
for (int i = 0; i < tableau.length; i++)

Est traduisible par :

"Pour tous les i allant de 0 à la taille du tableau". La taille du tableau n’est pas infinie et n’est pas modifiée dans la boucle, donc la boucle n’est pas infinie.

JustAnotherGuy

Je pense que le problème ne vient pas de là, mais de la boucle qui doit englobé le tout, et qui n’est pas visible dans le code fournie :)

Arf. En effet, le code que je t’ai envoyé ne répond pas entièrement à ton problème… En faite, tu rajoute une boucle infini (un petit while true par par exemple, pense à créer une condition d’arrêt « propre» par contre )

Ce serais plus quelque chose comme ceci:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
int reponse;
        Scanner sc = new Scanner(System.in);
        int[] tableau = new int[]{1,2,3,4,5,6,7,8};
        do {
            reponse  = sc.nextInt();

            if (reponse != -1) {
                boolean found = false;
                for (int i = 0; i < tableau.length; i++) {
                    if (reponse == tableau[i]) {
                        System.out.println("In");
                        System.out.println(reponse);
                        found = true;
                        break;
                    }
                }
                if(!found) {
                    System.out.println("Not in");
                }
            }
        } while (reponse != -1);

Dans ce bout de code, tu sort de ta boucle uniquement si tu saisie -1. Tu n’est bien sûr pas obligé de mettre une suite logique de nombre dans ton tableau. [1,1,2,3,5,8,13] fonctionne également.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte