JMBeaucoup
Messages postés16Date d'inscriptionsamedi 4 avril 2009StatutMembreDernière intervention24 juin 2009
-
23 juin 2009 à 19:08
Utilisateur anonyme -
24 juin 2009 à 18:01
Bonsoir,
je veux compter combien j'ai de $20 dans une chaîne mais
j'ai un problème de taille mais je ne vois pas pourquoi car normalement ça devrai rentrer :)
si quelqu'un a une petite idée...
merci.
voici mon message d'erreur:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 32
at java.lang.String.charAt(Unknown Source)
at test.test1(test.java:32)
at test.main(test.java:7)
et bien sur, voici mon code:
public class test
{
public static void main(String[] args)
{
test.test1();
}
public static void test1(){
String chaine = "CMD$20Consigne$20En$20En$20Cours";
int longueurChaine = chaine.length();
System.out.println("longueurChaine: "+longueurChaine);
int caractDejaLu = 0;
int $20 = 0;
int quatre = 4;
char caract1 = 0;
char caract2 = 0;
char caract3 = 0;
char $='$';
char deux='2';
char zero='0';
while(caractDejaLu<longueurChaine){
caract1 = chaine.charAt(caractDejaLu);
System.out.println("La variable caract1 à pour valeur: "+caract1);
caract2 = chaine.charAt(caractDejaLu+1);
System.out.println("La variable caract2 à pour valeur: "+caract2);
caract3 = chaine.charAt(caractDejaLu+2);
System.out.println("La variable caract3 à pour valeur: "+caract3);
$20++;
System.out.println("La variable $20 à pour valeur: "+$20);
}
}
System.out.println("On est apres le while.");
if($20==quatre){
System.out.println("La variable $20 à pour valeur: "+$20);
System.out.println("On poursuit avec le code...");
}
else{
System.out.println("On passe la série de test.");
}
}
}
Tout d'abord (dans la boucle) tu lis 3 caractères, mais tu additionnes seulement 1 à caractDejaLu (caractDejaLu++; ) alors qu'íl faudrait faire +3 (caractDejaLu+=3; )
Ensuite étant donné qu'avant le $20 suivant tu n'as que 2 caractères alors que tu vas en lire 3, tu laisse passer le $20 suivant...
Je vais te conseiller d'utiliser (par exemple) int index indexOf(String str) str sera "$20",
S'il n'y a pas (ou plus) de "$20" index = -1. Ce sera la condition de ta boucle: while
(ind != -1){
Mais tu dois travailler avec une copie de ta chaîne car par la suite tu vas devoir supprimer ce qu'il y a du début jusqu'au $20 (compris) que tu as trouvé pour rechercher le "$20" et tant qu'à faire ne pas détruire la chaîne initiale.
Comment: en utilisant String substring(int indice début, int indice fin). Dans notre cas ,int indice fin n'est pas nécessaire puisque qu'on garde ce qu'il reste jusqu'à la fin de la chaîne.
Regardes ces 2 méthodes et n'hésites pas à poser des questions si besoin est.
Cordialement,
...\ Dan /...
Ps,
Tu peux également regarder la classe StringTokenizer...