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

Langage Java Discussion :

Convertir un char[][] en string


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut Convertir un char[][] en string
    Bonjour a tous,

    Je dois creer une method appele:

    public String codeMessage(String message)

    My methode dois decoder le message par example:

    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

    pour

    "NOPQRSTUVWXYZABCDEFGHIJKLM"

    Dans mon program j'ai cree une methode passant dans chaque rotors appele passThruRotorsAndReflect(char letter), et result en donnant la lettre final decoder. Par example si l'utilisateur tape 'A' passe dans chaque disque et result en donnant la lettre 'N'

    Le problem de la nouvelle method est que je dois changer l'argument message qui est une string en char si je veux reutiliser ma method passThruRotorsAndReflect(char letter), mais je ne vois pas comment.

    En dessous ces mes rotors et reflector:

    rotor1
    {{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'},
    {'G', 'T', 'U', 'B', 'Z', 'Y', 'V', 'J', 'L', 'K', 'S', 'A', 'W', 'X', 'H', 'C', 'D', 'E', 'M', 'N', 'O', 'P', 'Q', 'R', 'I', 'F'}};

    rotor2
    {{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'},
    {'L', 'C', 'D', 'G', 'Y', 'U', 'B', 'Z', 'S', 'V', 'J', 'E', 'M', 'A', 'W', 'X', 'H', 'N', 'O', 'P', 'Q', 'R', 'I', 'F', 'T', 'K'}};

    rotor3
    {{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'},
    {'S', 'V', 'J', 'E', 'M', 'W', 'X', 'L', 'N', 'A', 'B', 'H', 'C', 'O', 'P', 'Q', 'R', 'I', 'F', 'Y', 'D', 'G', 'T', 'U', 'Z', 'K'}};

    reflector
    {{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'},
    {'Y', 'R', 'U', 'H', 'Q', 'S', 'L', 'D', 'P', 'X', 'N', 'G', 'O', 'K', 'M', 'I', 'E', 'B', 'F', 'Z', 'C', 'W', 'V', 'J', 'A', 'T'}};

    Je trouve ce program tres complique

  2. #2
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut pardon
    J'ai oublier de mettre mes codes.

    Ci-dessous le code pour la method passThruRotorsAndReflect(char letter)

    public char passThruRotorsAndReflect(char letter)
    {
    int i = 0;
    char result = getCodeFor(letter, rotor1);
    char result1 = getCodeFor(result, rotor2);
    char result2 = getCodeFor(result1, rotor3);
    char backward1 = getDecodeFor(result2, reflector);
    char backward2 = getDecodeFor(backward1, rotor3);
    char backward3 = getDecodeFor(backward2, rotor2);
    {
    this.getCodeFor(letter, rotor1);
    rotor2[0][i] = result;
    this.getCodeFor(result, rotor2);
    rotor3[0][i] = result1;
    this.getCodeFor(result1, rotor3);
    reflector[0][i] = result2;
    this.getCodeFor(result2, reflector);
    rotor3[0][i] = backward1;
    this.getDecodeFor(backward1, rotor3);
    rotor2[0][i] = backward2;
    this.getDecodeFor(backward2, rotor2);
    rotor1[0][i] = backward3;
    this.getDecodeFor(backward3, rotor1);
    }

    return getDecodeFor(backward3, rotor1);
    }

    Et voici ma nouvelle method miserable

    public String codeMessage(String message)
    {
    {
    this.passThruRotorsAndReflect(message)
    }
    return passThruRotorsAndReflect(message);
    }

    }

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Par défaut
    Bonjour,

    En fait, ce que tu veux, c'est itérer sur chaque caractère de ton message pour avoir le caractère associé via ta méthode passThruRotorsAndReflect ?

    Dans ce cas, soit :

    • Tu utilises la méthode toCharArray() sur ton message pour avoir l'ensemble des caractères dans un tableau
    • Tu utilises la méthode charAt(int index) pour obtenir le caractère situé à la position index.

    Pour l'itération, il suffit ensuite d'appeler la méthode length() pour avoir la longueur de ta chaine.

    Si c'est autre chose, n'hésites pas à demander.

    Au passage, utilises la balise pour présenter ton code, c'est plus lisible pour nous

    Bon code

  4. #4
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut
    Je debute en Java, donc ne sois pas choque par mes codes.

    Pour commencer j'ai tape ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char rotor1[][] = message.ToCharArray();
    Mais je recois une syntax error: cannot find symbol. message ToCharArray()


  5. #5
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut
    Autant pour moi j'ai mal epeler toChar

  6. #6
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 53
    Par défaut
    Citation Envoyé par cyrodil Voir le message
    Autant pour moi j'ai mal epeler toChar

    Merci encore Jeremy pour ton aide

    J'espere que j'ai compris voici mon code:

    public String codeMessage(String message)
    {
    StringBuffer sb = new StringBuffer();
    char[] rotor = message.toCharArray();
    for (int i=0;i < rotor.length;i++)
    {
    sb.append(passThruRotorsAndReflect(rotor[i]));
    }
    return sb.toString();
    }

    J'ai un problem avec rotor.length(), il me renvoi une syntax error qu'il ne reconnais pas length(), donc j'ai changer avec juste length, ca fonctionne mais j'espere que cela ne va pas affecter le resultat.

    Ensuite j'ai tester mon code mais le resultat est plus que bizarre

    "NPEQCEKWXFG!OGMBDUV!RSHISS" au lieu de

    "NOPQRSTUVWXYZABCDEFGHIJKLM"


    Mais la premiere lettre est OK c'est deja ca

    J'espere que je n'ai pas fait d'erreur dans mon code

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Par défaut
    Pas de soucis, on a tous débuté un jour.

    Il y a deux erreurs dans ce code :


    • La première c'est que la méthode s'appelle toCharArray() et non ToCharArray()
    • La seconde, c'est que tu reçois un tableau de caractères à une dimension et non deux dimensions.

    Voici un exemple simplifié avec deux méthodes :
    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
     
        public char passThruRotorsAndReflect(char letter) {
            return letter;
        }
     
        public String codeMessage(String message) {
            StringBuffer sb = new StringBuffer();
            for (int i=0;i<message.length();i++) {
                sb.append(passThruRotorsAndReflect(message.charAt(i)));
            }
            return sb.toString();
        }
     
        public String codeMessage2(String message) {
            StringBuffer sb = new StringBuffer();
            char[] letters = message.toCharArray();
            for (int i=0;i<letters.length;i++) {
                sb.append(passThruRotorsAndReflect(letters[i]));
            }
            return sb.toString();
        }

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

Discussions similaires

  1. Convertir Char* en String
    Par Blunt dans le forum C++/CLI
    Réponses: 1
    Dernier message: 01/07/2007, 16h46
  2. Convertir char* en string
    Par KorTeX22 dans le forum C++
    Réponses: 5
    Dernier message: 13/03/2007, 11h54
  3. Convertir un Char* en string
    Par DEVfan dans le forum C++
    Réponses: 4
    Dernier message: 05/01/2007, 16h15
  4. convertir un char * en std::string
    Par benahpets dans le forum SL & STL
    Réponses: 12
    Dernier message: 01/05/2006, 17h15
  5. convertir un char * en string
    Par Seij dans le forum C++
    Réponses: 5
    Dernier message: 08/03/2006, 22h23

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