Incrementer un String

Fermé
adriano - 22 mars 2010 à 17:08
 adriano - 24 mars 2010 à 17:16
de la difficulte pour un programme java

je doit incrementer de 5, une chaine de caractere

mais incrementer de 5 simplement les lettres qui sont
en position impair.

exemple;1234f&9hBF22
devient;1234f&9mBK22
merci de votre aide

6 réponses

Utilisateur anonyme
23 mars 2010 à 00:57
Salut,

Ma réponse c'est d'abord quelques questions:

Tu dis "mais incrementer de 5 simplement les lettres qui sont
en position impair." ! Ne serait-ce pas "en position paire" ? car dans ton exemple, ce sont le h (en position 8 donc paire qui devient m, et le F (en 10) qui devient K.

Ensuite, il faut qu'on sache que deviennent les lettres v, w, x, y et z?
Peut-être a, b, c, d, et e.

À préciser...

Cordialement,

Dan
0
desoler, si j ai mal expliquer,

en fait cela est correcte, puisqu il faut compter a partir de 0, donc le h est en position 7 ce qui est impair, donc il faut l incrementer de 5,

donc, l utilisateur entre une chaine de caractere, si j ai n importe quel lettre quel soit majuscul ou minuscule dans une position impair il faut l incrementer de 5,

meme les lettre comme a,b,c,d,e, et v,w,x,y,z.

exemple, 1bezreA
reponse, 1geerF

j ai comme meme une petite idee, comment le programmer, je vais comme meme essayer et je le mettrais.

je vais la faire avec la boocle for
0
latoopa Messages postés 258 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 5 janvier 2012 32
Modifié par latoopa le 23/03/2010 à 16:33
Salut,

oui une boucle for me parait bien (tu parcours chaque caractère de ta chaine comme ca) :

for(int i =0 ; i != chaine.length() ; i++){ 
     if ( i%2 != 0){ // si i impair 
           // si ton char "chaine.chatAt(i)" est une lettre : code ASCII ;-)
           { 
                 //   code ASCII = code ASCII + 5; 
                 //   remplacement du caractère dans la chaine; 
           } 
     } 
} 


Voilà, je pense que comme ca tu devrais t'en sortir ;)
Aplouch

Toopa
0
merci beaucoup pour votre aide
trés apprécié, sincèrement.

j ai pu reussir le programme, que je devais faire,

j ai une simple question, par curiosité, j aimerai savoir, pourquoi dans la boucle for

for(int i =0 ; i != chaine.length() ; i++){
instr.
¸}
j aimerai savoir pour le i != chaine.length() , qu est ce que sa veux dire parce que sa marche bien, moi je l avais fait de cette facon

for(int i =0 ; i < chaine.length() ; i++){ ....

et sa la egalement bien marcher, c est simplement par curiosite, parce que moi et les boucles for, sa fait deux ;).

pk different

merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
latoopa Messages postés 258 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 5 janvier 2012 32
24 mars 2010 à 09:01
Salut,

alors :

i < chaine.length()

signifie (puisque cette condition est située au milieu dans la boucle for) que ta boucle va "reboucler" tant que i est inférieur à la valeur entière qui correspond à la longueur de ta chaine de caractères

i != chaine.length()

signifie que ta boucle va "reboucler" tant que i est différent de la valeur entière qui correspond à la longueur de ta chaine de caractères (!= correspond en effet à "différent")

Ce n'est donc pas la même condition d'arrêt, mais dans ce cas particulier elle arrête la boucle au même moment, quand i = chaine.length()

Voilà, en espérant t'avoir éclairé.
Toopa
0
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
Modifié par xav3601 le 24/03/2010 à 13:42
Pour gagner du temps, je ne ferais passer ma boucle for que dans les positions impair!
Ca réduirait le traitement est permettrai d'éviter le test avec le modulo:

for(int i =1 ; i < chaine.length() ; i=i+2){
// code ASCII = code ASCII + 5;
// remplacement du caractère dans la chaine;
}


La culture c'est comme la confiture, moins en a plus on l'étale!
0
latoopa Messages postés 258 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 5 janvier 2012 32
24 mars 2010 à 13:37
Oui mais à ce moment là, comme la chaine a un nombre de caractères pouvant etre pair ou impair, il faut utiliser i < chaine.length() et non plus i != chaine.length() car sinon tu peux le dépasser.
0
xav3601 Messages postés 3289 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 2 mars 2016 311
24 mars 2010 à 13:42
Oui en effet j'ai pas fas gaffe à ca!
Très juste, je modifie :-)
0
hey les gars, je vous remercie infiniment pour votre aide

c est tres apprécié,

j ai reussi le programme en faisant la boucle for, et a l interieur de cette boucle j ai mis la

condition de if(i%2 !=0), et ca marcher,

for(int i =0 ; i < chaine.length() ; i++){ ....

lettre=chaine.charAt(i);
if (i % 2 !=0) {.......
je vous remercie du fond du coeur, ;)
0