rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

[java]probleme boucle while

Posté par nabbla, le samedi 8 octobre 2005 à 19:57:53
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
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;
	}
TRUST IS A WEAKNESS
Répondre à nabbla  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 agonis57, le dimanche 9 octobre 2005 à 09:45:13
première chose, refais ton parenthesage a ce niveau, il en manque
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
Répondre à agonis57
Logiciels pertinents trouvés dans les téléchargements
Télécharger Java Runtime Environment 6 Update 7Java Runtime Environment - Java Runtime Environment (JRE) installe la machine virtuelle Java, permettant de jouer en ligne, de discuter avec des...Catégorie: Java
Licence: Open Source
Télécharger Azureus 3.0.5.2bAzureus - Azureus est un client BitTorrent multiplateformes développé en Java, c'est-à-dire un gestionnaire de téléchargement de...Catégorie: Téléchargement
Licence: Open Source
Télécharger FreeMind 0.8.1FreeMind - FreeMind est un logiciel de Mind mapping entièrement libre, permettant de créer des cartes heuristiques permettant de...Catégorie: Organisation
Licence: Open Source
Télécharger Web Developer Toolbar 1.1.6Web Developer Toolbar - WebDeveloper est une extension firefox représentant une formidable boîte à outils pour examiner et manipuler les pages...Catégorie: Extensions Firefox
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [java]probleme boucle while »