Bonjour,
Je comprend pas ou est l'erreur dans cette fonction là.En fait lafonction renvoi la chaine la plus presente dans la chaine qu'on lui envoi. Mais j'ai une erreur et je sais pas d'ou ca vient!

La fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public String subseq(String seq,int l){
 
		String ch=""; // sous chaine
        String res=""; // resultat
		int val=0;  // compteur de sous chaine
		for(int i=0;i<seq.length();i++){
			  ch=seq.substring(i,i+l);
 
 
              int z=0;
			  Pattern p = Pattern.compile(ch);
			  Matcher m = p.matcher(seq);
		      while(m.find()) {
		    	  z++;
 
		      }
 
		      if(z > val){        // Comparaison avec la chaine deja stocké
		    	  val=z;
		    	  res=ch;
		      }
		      else if(z==val){
		    	 if(ch.compareTo(res)== -1){
		    		val=z;
		    		res=ch;
		    	 }
		      }
 
 
		}
 
		return res;
	}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 27
	at java.lang.String.substring(String.java:1946)
	at Acide.subseq(Acide.java:106)
	at Main.main(Main.java:10)