Problème parcours de tableau

ruru -  
 ruru -
Bonjour,

J'ai fait un petit programme java qui fonctionne bien d'ailleurs, même trop bien pour moi,lol. Car en fait je parcours un tableau de 7 celules pour comparer si une valeur saisi au clavier est présente dans le tableau. Pour parcourrir le tableau j'utilise l'indice i et le fait parcourir de la cellule 0 a la cellule tab.length-1(qui vaut 6 car je vous le rapelle mon tableau comporte 7 cellules). Mais pour que mon programme fonctionne bien dans la condition de ma boucle je dois écrire que i<tab.length-1 et non pas i<=tab.length-1 sinon java me met un message d'erreur. Mais je comprends pas car i<tab.length-1 devrait faire parcourir l'indice jusque la 6ème cellule et pourtant il va bien jusque la 7ème (car j'ai fait le test en saisissant la dernière lettre de mon tableau).
Je vous colle mon code java ce sera peut etre plus simple à comprendre. Et si quelqu'un peut me dire pourquoi l'indice va jusque 6 alors que la condition indique absolument inférieur à 6 puisque i<tab.length-1 et que je rapelle tab.length vaut 7 et si je sais encore compter 7-1 vaut 6.
Merci d'avance ami programmeur.

import java.util.Scanner;

public class tableau {

public static void main(String[] args) {
char tab[]={'b','o','n','j','o','u','r'};
int i=0;
char str;

Scanner sc = new Scanner(System.in);
System.out.print("Veuillez tapez une lettre");
str=sc.nextLine().charAt(0);

while(i<tab.length-1 && tab[i]!=str){
i=i+1;

if (tab[i]==str){

System.out.print("Cette lettre " + tab[i]+ " est bien dans le tableau");
}

}

if(tab[i]!=str)
System.out.print("Cette lettre " + str+ " n'est pas dans le tableau");

}

}
A voir également:

1 réponse

ruru
 
Ah ok, je pense avoir compri. Mon indice i arrive à 6, rentre ensuite dans la condition du if et c'est losque i revient dans la boucle là i vaut toujours 6 et je sort de ma boucle. Et je devais refermer ma boucle après l'incrémentation de i car dès que je sorts de ma boucle c'est la que je dois comparer.
Voila mon code avec la correction.
Dsl de vous avoir posé la question.

import java.util.Scanner;

public class tableau {

public static void main(String[] args) {
char tab[]={'b','o','n','j','o','u','r'};
int i=0;
char str;

Scanner sc = new Scanner(System.in);
System.out.print("Veuillez tapez une lettre");
str=sc.nextLine().charAt(0);
while(i<tab.length-1&& tab[i]!=str)
{
i=i+1;
}
if (tab[i]==str){

System.out.print("Cette lettre " + tab[i]+ " est bien dans le tableau");
}

if(tab[i]!=str)
System.out.print("Cette lettre " + str+ " n'est pas dans le tableau");

}

}
0