[java]probleme boucle while
Utilisateur anonyme
-
agonis57 Messages postés 44 Statut Membre -
agonis57 Messages postés 44 Statut Membre -
bonjour à tous,
voilà j'ai un petit probléme, je fait un test sur 2 chaines de caractère, une que j'apelle texte, l'autre motif, je doit donc rechercher si le motif apparait dans le texte.
Le probléme c'est que ma boucle s'arréte dés qu'elle rencontre le premier caractère de mon motif par exemple si mon texte est "bbcb" et mon motif "ca", ma méthode me dira que le motif apparait bien dans le texte a la position 3 alors que théoriquement le motif ne devrai pas y étre. J'ai mis des System.out.println pour controlerle déroulement de la boucle,mais "fin" me renvoi toujours false alors qu'il devrait etre true pour que la boucle s'arréte.J'arrive pas à voir ou est le problème, qu'en je developpe l'algo à la main ca va, mais un truc doit m'échapper. Merci de votre aide
voilà j'ai un petit probléme, je fait un test sur 2 chaines de caractère, une que j'apelle texte, l'autre motif, je doit donc rechercher si le motif apparait dans le texte.
Le probléme c'est que ma boucle s'arréte dés qu'elle rencontre le premier caractère de mon motif par exemple si mon texte est "bbcb" et mon motif "ca", ma méthode me dira que le motif apparait bien dans le texte a la position 3 alors que théoriquement le motif ne devrai pas y étre. J'ai mis des System.out.println pour controlerle déroulement de la boucle,mais "fin" me renvoi toujours false alors qu'il devrait etre true pour que la boucle s'arréte.J'arrive pas à voir ou est le problème, qu'en je developpe l'algo à la main ca va, mais un truc doit m'échapper. Merci de votre aide
public/*@pure@*/ int naive(){
k = -1;
j = -1;
fin = false;
trouve = false;
while (!fin && !trouve){
fin = (k == (longTexte(texte)-1) && j == longMotif(motif)-1 );
if (!fin){
if(j == longMotif(motif)-1 ){
j=0;
k=k+1;
trouve=compare(k,j);
System.out.println("tj"+k);
System.out.println("tt"+lm);
}//if
else{
k=k+1; j=j+1;
trouve=compare(k,j);
System.out.println("uu"+k);
System.out.println("ti"+j);
System.out.println("fin "+fin);
System.out.println("trouve "+trouve);
}//else
}//if
}//while
if (trouve == true ){
//la position du motif est k+1, on compte à partir de 1.
pos = k + 1;
System.out.println("le motif se trouve dans le texte à la position "+pos);
}//if
else{
System.out.println("le motif ne se trouve pas dans le texte.");
}//else
return k;
}//naive
public boolean compare (int l, int m){
identik = ( texte.charAt(l) == motif.charAt(m));
//if (identik == false) j=-1;
return identik;
}
A voir également:
- [java]probleme boucle while
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Eclipse java - Télécharger - Langages
1 réponse
première chose, refais ton parenthesage a ce niveau, il en manque
en gros, l'algo, je te le dit, devrait être beaucoup plu scompliqué !!!!!!
à mon avis tu devrais le revoir sur papier parce qu'il est loin de marcher</pre>
fin = (k == (longTexte(texte)-1) && (j == longMotif(motif)-1 )); Ensuite, il y a un truc qui me parait bizarre. j'ai l'impression que tu incrémente j même quand motif(j) il n'est pas trouvé dans texte, ce qui ne devrait pas etre le cas : il faut rester sur le premier caractere du motif tant que tu ne l'a pas trouvé ensuite tu as écrit
trouve=compare(k,j), ce qui est faut, c'est motif[j] et texte[k] qu'il faut comparer.
en gros, l'algo, je te le dit, devrait être beaucoup plu scompliqué !!!!!!
à mon avis tu devrais le revoir sur papier parce qu'il est loin de marcher</pre>