Bonjour à tous,
Je cherche à écrire un programme qui transforme une chaine de caractère en un message codé : il doit remplacer chaque caractère par la lettre située 4 positions plus loin dans l'alphabet. Or, en grand débutant largué, je suis coincé...J'ai écris une boucle for, qui s'est avérée fausse, et j'ai ua moins compris pourquoi ;
1/ Pour une valeur de i, le code prend la lettre de l'alphabet à la position i et la remplace, au lieu de prendre la lettre de la chaine de caractère.
2/ Le code transforme la chaine caractère par caractère au lieu d'afficher le message codé complet d'un seul coup. (par exemple, pour abcd, cela donne ebcdafcdabgabch au lieu de efgh).
J'ai compris les problèmes mais je ne sais pas comment les résoudre, j'aimerais de l'aide.
Mon code est ci dessous; j'ai écris très peu, le début et la fin était déjà rédigées par les enseignants.
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 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()-1; ++i){ chaineCodee += aCoder.replace(aCoder.charAt(i), ALPHABET.charAt(aCoder.charAt(i)+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); } } }
Partager