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 :

DEBUTANT JAVA, Chiffrement César


Sujet :

avec Java

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2021
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 21
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2021
    Messages : 4
    Points : 5
    Points
    5
    Par défaut DEBUTANT JAVA, Chiffrement César
    Bonjours, je dois coder un chiffrement césar, pour cela j'ai besoin de pouvoir passer chaque lettre du message à la suivante.
    Erreur en fin de code


    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
    package chiffrage;
    import java.util.Scanner;
     
    import javax.swing.UIDefaults.ActiveValue;
     
    public class Main {
     
    	public static void main(String[] args) {
     
    		Scanner scan = new Scanner (System.in);
    		System.out.println("Quel message faut t-il chiffrer ?");
    		String MESSAGE = scan.nextLine();
    		int taille = MESSAGE.length();
    		System.out.println(taille);
    		System.out.println(MESSAGE);
    		String[] decomposé = MESSAGE.split("", taille);
     
    		for (int i = 1; i<=taille; i++)
    		System.out.println("\r\n");
    		System.out.println(decomposé[ActiveValue(i)]);                            
     
     
    /*
    (ICI, JE ne sais pas comment afficher chaqu'une des lettre de ma liste, il faudrait que je puisse tranformer i dans mon [])
    ENSUITE, je ne sais comment passer d'une lettre a une autre. Je n'ai peut etre pas le niveau suffisant pour faire ce code.
    */
     
     
     
    	}
     
     
    }
    Merci

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    ce n'est pas une bonne idée d'utiliser split() pour séparer les caractères individuellement. Un caractère seul devrait être représenté comme un char, pas comme une String qui serait apparemment de longueur 1.

    Pour récupérer un caractère précis d'une String, on utilise charAt(), en indiquant l'index du caractère voulu. Cet index fonctionne comme avec les tableaux : le caractère au début de la String est à l'index 0, celui d'après 1, puis 2 etc. Le dernier caractère est donc d'index laString.length() - 1

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    char ch = "Hello".charAt(1);
    System.out.println(ch); // affiche e
    Pour "passer d'une lettre à l'autre," il y a deux méthodes, une qui peut se deviner, l'autre moins :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char ch = 'A';
    ch += 2;
    System.out.println(ch); // affiche C
    Moins facile :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    char ch1 = 'A';
    char ch2 = (char)(ch1 + 2);
    System.out.println(ch2); // affiche C
    En effet, l'opérateur + s'applique sur un ou des chars, mais le résultat produit est un int, qui ne peut pas être assigné tel quel à un char.
    C'est parce qu'un char est un nombre 16-bits non-signé et qu'un int est un nombre 32-bits signé. Il existe plein d'ints qui ne peuvent pas être mis dans un char, et donc on ne peut pas demander à Java de le faire comme ça, comme si ça ne pouvait pas poser de problème.

    Mais on peut demander à convertir l'int en char, avec le cast (char). Si l'int pouvait être mis dans un char sans problème, ce qui est la situation qui nous intéresse, alors la conversion le fait purement et simplement. S'il ne le pouvait pas, on enlève les bits de haut niveau qui dépassent, du coup le char obtenu ne correspond pas vraiment à l'int. Mais c'était peut-être la conversion qu'on voulait obtenir. En tout cas c'est ce que fait le cast.

    A noter que si le caractère obtenu dépasse Z (ou arrive avant A), on pourra devoir retrancher (ou ajouter) 26 du nombre obtenu.
    Du coup il y a des techniques pratiques à trouver pour faire ce genre de codages.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [AC-2002] Faire une lettre de rappel pour les factures non encore payées
    Par antezi dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/04/2009, 16h40
  2. Réponses: 1
    Dernier message: 31/07/2007, 16h16
  3. [Debutant] Faire une belle explosion
    Par atchoum_69 dans le forum DirectX
    Réponses: 4
    Dernier message: 08/10/2004, 13h54
  4. [Debutant(e)]Quel composant utiliser pour faire une grille
    Par elitost dans le forum Composants
    Réponses: 7
    Dernier message: 21/06/2004, 20h44
  5. [debutant]quoi fair pour recompiler un fichier .java
    Par nouaman dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 27/05/2004, 09h10

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