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 :

question sur indexOf(" ") == -1


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut question sur indexOf(" ") == -1
    Bonjour, j'aimerais avoir une explication sur le code suivant, particulièrement sur "indexOf(" ") == -1"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(pseudo.indexOf("")==-1)
            System.out.println("Votre pseudo ne doit pas comporter d'espace");
    else
            //faire quelque chose
    Je sais que ce code test l'emplacement des "" (cad une chaine vide donc un espace) et affiche le message "Votre pseudo ...." si l'utilisateur a rentré un pseudo comportant des espaces MAIS pourquoi "indexOf(" ") == -1"? A quoi correspond le -1? Quelle est la logique derrière?
    Merci d'avance de vos éclaircissements
    bonne journée

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Citation Envoyé par grospatapouf Voir le message
    Bonjour, j'aimerais avoir une explication sur le code suivant, particulièrement sur "indexOf(" ") == -1"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(pseudo.indexOf("")==-1)
            System.out.println("Votre pseudo ne doit pas comporter d'espace");
    else
            //faire quelque chose
    Je sais que ce code test l'emplacement des "" (cad une chaine vide donc un espace) et affiche le message "Votre pseudo ...." si l'utilisateur a rentré un pseudo comportant des espaces MAIS pourquoi "indexOf(" ") == -1"? A quoi correspond le -1? Quelle est la logique derrière?
    Merci d'avance de vos éclaircissements
    bonne journée
    Cela veut dire que si la position du caractère (ou de la chaine de caractères ), qui se trouve entre les guillemets, dans la chaine de caractères de pseudo, est -1, alors afficher Votre pseudo ne doit pas comporter d'espace

    Sans doute pas très clair.

    Exemple : String pseudo = "azerty";

    On voit que la chaine de caractère "azerty" ne comporte pas de caractère espace.

    La fonction indexOf() permet de trouver la position d'un caractère ou d'une chaine de caractères dans une autre chaine de caractères.

    la position de 'a' dans "azerty" est 0
    la position de 'z' dans "azerty" est 1
    la position de 't' dans "azerty" est 2
    etc..

    la position de 'x' dans "azerty" est -1. Pourquoi ? Parce que le caractères 'x' n'existe pas dans dans "azerty".

    Ton code est déjà faux. Pourquoi ?

    On ne voit rien dans tes guillemets. Ici, tu as écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(pseudo.indexOf("")==-1)
    tu aurais dû écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(pseudo.indexOf(" ")==-1)
    Ceci étant dit, si ce caractère (espace) n'existe pas dans pseudo,
    alors, ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println("Votre pseudo ne doit pas comporter d'espace");
    devient forcément incohérent.

    En résumé, si tu veux une situation booléenne testant la présence du caractère espace, voici ce que tu dois écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(pseudo.indexOf(" ") >= 0)
            System.out.println("Votre pseudo ne doit pas comporter d'espace");
    else
            //faire quelque chose
    Si la position du caractère espace dans la chaine pseudo est supérieure ou égale à zéro, autrement dit, si si le caractère espace existe dans pseudo, alors, la suite devient cohérente.

    Autre chose : recherche de la position d'une chaine de caractères dans une autre chaine de caractères.


    La position d'une chaine dans une autre chaine est la position du premier caractère de la chaine recherché

    La position de "az" dans "azerty" est : 0
    La position de "zer" dans "azerty" est : 1
    La position de "za" dans "azerty" est : -1 ... Normal! la sous chaine "za" n'existe pas dans "azerty".

  3. #3
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Sacré message Nayila
    En faites, pas besoin de faire de long discours pour expliquer quelque chose qui se trouve dans la javadoc. Ta variable pseudo est sans nul doute de type String. Donc go javadoc
    On retrouve indexOf() et on lit ceci concernant la valeur de retour:
    if the string argument occurs as a substring within this object, then the index of the first character of the first such substring is returned;
    if it does not occur as a substring, -1 is returned.
    Paf, le mystère du -1 est résolu.

    Cependant, j'en viens à me demander si ta solution est la meilleure. Apparemment, tu ne conserves pas l'index du caractère retourné par indexOf donc ton test relève du bidouillage pour faire du controle de surface.

    Dans String, tu trouveras plein de petites fonctions sympa pour travailler sur ta chaîne de caractères. Ainsi, tu auras la méthode contains() qui parait plus à propos pour le test que tu veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(pseudo.contains(" ")){
    ...
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Citation Envoyé par zorm Voir le message
    Sacré message Nayila
    En faites, pas besoin de faire de long discours pour expliquer quelque chose qui se trouve dans la javadoc. Ta variable pseudo est sans nul doute de type String. Donc go javadoc
    On retrouve indexOf() et on lit ceci concernant la valeur de retour:
    Paf, le mystère du -1 est résolu.

    Cependant, j'en viens à me demander si ta solution est la meilleure. Apparemment, tu ne conserves pas l'index du caractère retourné par indexOf donc ton test relève du bidouillage pour faire du controle de surface.

    Dans String, tu trouveras plein de petites fonctions sympa pour travailler sur ta chaîne de caractères. Ainsi, tu auras la méthode contains() qui parait plus à propos pour le test que tu veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(pseudo.contains(" ")){
    ...
    }
    Moi j'explique en détail. Ne vous en déplaise !

  5. #5
    Membre émérite Avatar de zorm
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    584
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 584
    Par défaut
    Qu'il n'y ait pas de mal entendu entre nous, votre message ne m'en "déplaise" pas.
    Je ne faisais que rajouter une couche d'explication avec une proposition d'initiative de consulter la sacro-sainte Javadoc.
    Votre parole n'est pas mise en doute et le commentaire "Sacré message Nayila" était, pour ma part, un compliment

    A bon entendeur, salut!

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 149
    Par défaut
    Merci à vous tous.
    Zorm, j'avais regardé dans le javadoc mais je voulais comprendre le méchanisme derrière, comment ça fonctionne?

    Nayila, ton explication est exactement ce qu'il me fallait. Merci!

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

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