Incrementer un String

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

  1. 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
    1. 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
      1. 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
        1. 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
          1. 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
            1. 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!
              1. 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.
              2. Oui en effet j'ai pas fas gaffe à ca!
                Très juste, je modifie :-)
              3. 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, ;)