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

Collection et Stream Java Discussion :

Vérifier si une chaine entrée contient des caractères dans un tableau


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 44
    Points
    44
    Par défaut Vérifier si une chaine entrée contient des caractères dans un tableau
    Bonjour,

    J'aimerais déterminer si une chaîne entrée par l'utilisateur contient uniquement les caractères dans le tableau lettresAleatoires. Si une lettre diffère, on rejette ce qu'il a écrit et demande d'entrer une autre chaîne. Voici ce que j'ai écrit jusqu'à maintenant, le code dans la méthode verifierSiValide() est manquant et c'est dans cette méthode que je voudrais faire la vérification.

    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
         private final static char[] lettresAleatoires =
        {
            'R', 'B', 'O', 'V', 'J', 'F', 'I', 'N'
        };
     
       private static void demanderCombinaison() throws IOException
        {
            do
            {
                System.out.println("Entrez votre combinaison pour l'essai " + essai
                        + " <enter> pour arrêter");
                CombinaisonEntree = r.readLine();
            } while (CombinaisonEntree.length() != 4);
        }
     
        private static void verifierSiValide()
        {
        }
    Merci d'avance

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Sans la bibliothèque commons-lang, c'est un peu longuet :

    le seul moyen de savoir si un char est présent dans un tableau de chars, c'est de parcourir le tableau et de s'arrêter quand on a trouvé le char recherché. Si on ne l'a pas trouvé, c'est qu'il n'y est pas.

    Pour te simplifier la vie, tu peux écrire une méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /** Indique si le tableau donné contient le char donné. */
    public static boolean arrayContains(char[] array, char c) {
      // à toi d'implémenter
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 44
    Points
    44
    Par défaut
    Je ne comprends pas vraiment comment faire la validation

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Points : 276
    Points
    276
    Par défaut
    Dans une méthode bien particulière, je convertirai ton tableau lettresAleatoires , en une String contenant les lettres de celui-ci => lettresAleatoiresString = String.valueOf(lettresAleatoires); (par exemple).

    Puis je parcourerais ta chaine en entrée lettre à lettre. et a chaque lettre j'utiliserai une des fonctions fourni par String.
    Soit
    lettresAleatoiresString.contains(lettre); qui te renverra un booléen
    ou
    lettresAleatoiresString.indexOf(lettre); qui te renverra la position ou -1 si la lettre n'est pas trouvée.

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    Citation Envoyé par Roud9 Voir le message
    Je ne comprends pas vraiment comment faire la validation
    Personnellement je ne réponds pas aux "vous voulez bien faire mon travail s'il vous plaît ?"

    Montre-nous ce que tu as essayé, comment tu penses que tu pourrais faire mais que tu trouves pas en Java, bref, d'une manière générale, montre-nous que tu bosses et on t'aidera à te dépatouiller.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 44
    Points
    44
    Par défaut
    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
    private static void demanderCombinaison() throws IOException {
              System.out.print("Entrez votre code : ");
              String combinaison = scanner.readLine();
              boolean end = false;
              for (int i = 0; i < combinaison.length; i++) {
                   end = false;
                   for (int a = 0; a < lettresAleatoires.length && end == false; a++) {
                        if (combinaison.charAt(i) == lettresAleatoires[a]) {
                              end = true;    
                        }
                   }
     
                   if (end == false) {
                        System.out.println("Erreur");
                        demanderCombinaison();
                   }
              }
     
              System.out.println("Code OK.");
         }

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 565
    Points : 21 630
    Points
    21 630
    Par défaut
    La raison pour laquelle ça ne fait pas ce que tu veux, c'est que, quand il y a une lettre invalide, tu rappelles un nouveau demanderCombinaison() alors que tu es encore dans ta boucle de vérification.
    Il faut quitter la boucle d'abord. En fait, le mieux serait que demanderCombinaison() ne s'appelle pas elle-même. Il faudrait séparer le fait de faire taper un truc et vérifier si c'est valide, du fait d'afficher si c'est valide ou pas, et de recommencer si ça ne l'est pas.


    Sinon, elle était pas mal ton idée de faire une méthode verifierSiValide(). Seulement, il faut qu'elle renvoie la réponse, boolean, et qu'elle prenne en paramètre la combinaison à vérifier, String.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private static boolean verifierSiValide(String combinaison) {
      // faire return false si c'est pas valide, ou return true si c'est valide.
    }
    Autres remarques :
    - pour quitter une boucle, il y a l'instruction
    La boucle cesse immédiatement de s'exécuter, et le programme reprend à la première instruction après la boucle. S'il y a plusieurs boucles imbriquées, break; quitte la boucle la plus imbriquée, celle contenue par toutes les autres.

    - l'instruction
    quitte immédiatement la méthode en cours, ignorant les instructions suivantes. Faire un return dans une boucle est donc un moyen de quitter la boucle (et la méhode) dès qu'on connaît la réponse.

Discussions similaires

  1. Rempacer une chaine qui contient des "
    Par baime dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/10/2011, 07h58
  2. Réponses: 1
    Dernier message: 13/07/2011, 12h38
  3. Ajout automatique d'une page qui contient des WebParts dans une bibliothèque
    Par hassine dans le forum Développement Sharepoint
    Réponses: 3
    Dernier message: 29/04/2011, 08h36
  4. Réponses: 4
    Dernier message: 20/02/2006, 00h33
  5. insertin d'une chaine qui contient des guillemets
    Par karimspace dans le forum Access
    Réponses: 7
    Dernier message: 13/02/2006, 11h55

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