IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

cryptage d'une chaine de caractères


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Par défaut cryptage d'une chaine de caractères
    Bonjour à tous
    j ai le problème suivant "The left-hand side of an assignment must be a variable"si je comprend ceci veut dire que le coté gauche de l assignement doit être une variable ?
    donc dans mon cas "aCoder" ? pourtant je l 'ai bien déclarée ?
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    import java.util.Scanner;
     
    public class Crypto {
     
        static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
        static final int DECALAGE = 4;
     
        static Scanner scanner = new Scanner(System.in);
     
        public static void main(String[] args) {
     
            System.out.println("Veuillez entrer une chaine de caracteres : ");
            String s = scanner.nextLine();
     
            // la chaine a coder
            String aCoder = "";
            // la chaine codee
            String chaineCodee = "";
     
            /*******************************************
             * Completez le programme a partir d'ici.
             *******************************************/
            aCoder = s;
     
            while(aCoder=="") {
            	System.out.println("Veuillez entrer une phrase SVP");
            }
     
            for (int i = 0; i <aCoder.length(); i++) {
            	for (int j = 0; j < ALPHABET.length(); j++) {
            		if(aCoder.charAt(i) != ALPHABET.charAt(j)) {
            			aCoder.charAt(i) == aCoder.charAt(i)
            		} 
            		else if(aCoder.charAt(i) == ALPHABET.charAt(j)) {
            			aCoder.charAt(i) = ALPHABET.charAt(j+DECALAGE);
            		}
     
    			}
     
    		}
            /*******************************************
             * Ne rien modifier apres cette ligne.
             *******************************************/
            System.out.format("La chaine initiale etait : '%s'\n", s);
     
            if (aCoder.isEmpty()) {
                System.out.println("La chaine a coder est vide.\n");
            } else {
                System.out.format("La chaine a coder est : '%s'\n", aCoder);
                System.out.format("La chaine codee est : '%s'\n", chaineCodee);
            }
        }
    }
    première instruction if:
    si les caractères ne sont pas dans la chaine ALPHABET on ne les modifie pas.
    2ème instruction if :
    si le caractère de la chaine" aCoder" est dans ALPHABET celui-ci est modifier avec une valeur de j + CONSTANTE.
    pourriez vous juste m 'aiguiller merci.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    Certes, aCoder est une variable. Mais, tu ne fais pas aCoder = aCoder.charAt(i);, tu fais aCoder.charAt(i) = aCoder.charAt(i); .

    Tu crois que aCoder.charAt(i) est une variable ?


    ... Bon, on va éviter de te laisser sécher quand même. Il faut savoir que les String de Java sont immutables. On ne peut pas modifier leur contenu. Tu ne peux pas prendre un objet String et changer l'une des lettres qu'il contient. Un objet String reste tel qu'il est et ça ne changera pas.

    Pour obtenir ta String cryptée, tu dois donc créer un autre objet String, pas celui que tu as déjà. Cet autre objet String contiendra les lettres qu'il doit avoir. Tu peux l'obtenir en construisant des Strings l'une après l'autre, en commençant par la première lettre, puis la deuxième, puis la troisième, jusqu'à avoir construit la String finale.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Par défaut
    merci pour ta réponse,
    il me reste plus que les conditions
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    import java.util.Scanner;
     
    public class Crypto {
     
        static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
        static final int DECALAGE = 4;
     
        static Scanner scanner = new Scanner(System.in);
     
        public static void main(String[] args) {
     
            System.out.println("Veuillez entrer une chaine de caracteres : ");
            String s = scanner.nextLine();
     
            // la chaine a coder
            String aCoder = "";
            // la chaine codee
            String chaineCodee = "";
     
            /*******************************************
             * Completez le programme a partir d'ici.
             *******************************************/
     
     
     
     
     
    //        while(aCoder=="") {
    //        	System.out.println("Veuillez entrer une phrase SVP");
    //        }
            aCoder = s;
     
            for (int i = 0; i <s.length(); i++) {
            	for (int j = 0; j < ALPHABET.length(); j++) {
            		if(s.charAt(i)==ALPHABET.charAt(j)) {
            			chaineCodee =chaineCodee + ALPHABET.charAt(j+DECALAGE);
            		}
    			}
    		}
            /*******************************************
             * Ne rien modifier apres cette ligne.
             *******************************************/
            System.out.format("La chaine initiale etait : '%s'\n", s);
     
            if (aCoder.isEmpty()) {
                System.out.println("La chaine a coder est vide.\n");
            } else {
                System.out.format("La chaine a coder est : '%s'\n", aCoder);
                System.out.format("La chaine codee est : '%s'\n", chaineCodee);
            }
        }
    }

  4. #4
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Par défaut
    je n 'arrive pas à comprendre pourquoi le code m 'écrit 26 fois un caractère vide si j 'entre admettons cou cou? je vais avoir gsy "26 espaces" gsy
    on entre dans la boucle ,on trouve c il est transformé en g,
    on rerentre dans la boucle on trouve p il est transformé en s,
    on rerentre dans la boucle on trouve u il est transformé en y
    on rerentre dans la boucle on trouve un espace il est transformé en espace,
    pourquoi on rerentre pas dans la boucle pour retrouvé le c du deuxième cou pour avoir gsy gsy en résultat et que la compilation affiche 26 espaces ?
    je dois surement me planter dans ma vision de l 'itération mais ou ?
    merci pour vos réponses
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    import java.util.Scanner;
     
    public class Crypto {
     
        static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
        static final int DECALAGE = 4;
     
        static Scanner scanner = new Scanner(System.in);
     
        public static void main(String[] args) {
     
            System.out.println("Veuillez entrer une chaine de caracteres : ");
            String s = scanner.nextLine();
     
            // la chaine a coder
            String aCoder = "";
            // la chaine codee
            String chaineCodee = "";
     
            /*******************************************
             * Completez le programme a partir d'ici.
             *******************************************/
     
     
     
     
     
     
     
            aCoder = s;
            for (int i = 0; i <s.length(); i++) {
            	for (int j = 0; j < ALPHABET.length(); j++) {
            		if(aCoder.charAt(i)==ALPHABET.charAt(j)) {
            			chaineCodee = chaineCodee + ALPHABET.charAt(j+DECALAGE);
     
            		}
            		else if(aCoder.charAt(i)== ' ') {
            			chaineCodee = chaineCodee + " ";
            		}
     
     
     
     
            	}
     
            }
     
     
            /*******************************************
             * Ne rien modifier apres cette ligne.
             *******************************************/
            System.out.format("La chaine initiale etait : '%s'\n", s);
     
            if (aCoder.isEmpty()) {
                System.out.println("La chaine a coder est vide.\n");
            } else {
                System.out.format("La chaine a coder est : '%s'\n", aCoder);
                System.out.format("La chaine codee est : '%s'\n", chaineCodee);
            }
        }
    }

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    C'est parce que tu n'arrêtes pas la boucle intérieure quand tu as trouvé quelle lettre c'est. Tu fais toujours 26 fois cette boucle.

    Quand c'est pour une lettre, la boucle n'a d'effet qu'une seule fois sur les 26 : quand on tombe sur la bonne lettre.
    Mais quand c'est pour un espace, ça remarque 26 fois que c'est un espace, et ça ajoute 26 espaces.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Par défaut
    ok,c'est bon j'ai réussi avec un boolean

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. [VB2005] Cryptage d'une chaine de caractère
    Par abrial dans le forum VB.NET
    Réponses: 4
    Dernier message: 25/03/2008, 09h54
  3. Réponses: 9
    Dernier message: 17/01/2003, 11h45
  4. Lire Une Chaine De Caractères
    Par Jonathan_Korvitch dans le forum C
    Réponses: 12
    Dernier message: 07/01/2003, 05h37
  5. Réponses: 2
    Dernier message: 06/12/2002, 07h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo