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 :

[for each] Demande de confirmation


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [for each] Demande de confirmation
    Bonjour,

    En apprentissage de Java, j'ai déjà utilisé la boucle for étendue (for ... each) sur des tableaux, comme dans l'exemple suivant qui bien entendu fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int ti [] = {9,8,7} ;
    for (int i : ti) System.out.println(i) ;
    Cependant mon manuel me donne l'exemple suivant pour un objet de type String, et là ça ne compile pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String mot = "hello" ;
    for (String s : mot) System.out.println(s) ;
    En cherchant, je trouve que la boucle for each n'est valide que pour des tableaux et des classes implémentant l'interface iterable et que ce n'est pas le cas de la classe String. Merci de me confirmer que c'est bien l'explication du non fonctionnement de l'exemple.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 106
    Points : 121
    Points
    121
    Par défaut
    ça me parait logique.
    Il faut avoir qqch pour parcourir ton objet car le prg ne pourra pas le deviner tout seul

  3. #3
    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
    Ça serait pas complétement déconnant de penser qu'on puisse faire un for-each sur des String en Java (par contre, la variable de boucle serait sans doute un char, pas un String.)

    ... Mais c'est pas le cas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre chevronné
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Points : 2 011
    Points
    2 011
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Ça serait pas complétement déconnant de penser qu'on puisse faire un for-each sur des String en Java (par contre, la variable de boucle serait sans doute un char, pas un String.)

    ... Mais c'est pas le cas.
    Tu peux au prix d'une petite manip.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String s = "azertyuiop";
    for(char car : s.toCharArray()){
        System.out.println(car);
    }
    //affichera un caractère de la chaine par ligne

    -"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
    -"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".

    Pieds d'argile (1996), Terry Pratchett 1948 - 2015
    (trad. Patrick Couton)

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci de vos réponses

    L'exemple donné n'était donc pas loin de ce qu'il voulait montrer, mais à ce point du manuel la méthode toCharArray() n'a pas encore été vue.

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 572
    Points : 631
    Points
    631
    Par défaut
    Citation Envoyé par FJipé Voir le message
    En cherchant, je trouve que la boucle for each n'est valide que pour des tableaux et des classes implémentant l'interface iterable et que ce n'est pas le cas de la classe String. Merci de me confirmer que c'est bien l'explication du non fonctionnement de l'exemple.
    C'est exactement la règle.
    Venez partager vos expériences au sein d'un projet sur slicesofit, agile & amélioration continue

  7. #7
    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
    Citation Envoyé par Deadpool Voir le message
    Tu peux au prix d'une petite manip.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    String s = "azertyuiop";
    for(char car : s.toCharArray()){
        System.out.println(car);
    }
    //affichera un caractère de la chaine par ligne
    Il est dommage que ça passe par la construction et la copie d'un tableau de char superflu.

    (Et puis, en réalité, il y a pas de solution idéale, à cause de la possibilité de surrogates qui ne peuvent pas être bien gérés dans un for-each.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. xsl:for-each avec un parametre pour select
    Par arnog dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 26/08/2008, 13h09
  2. apply-templates et for-each
    Par d'Oursse dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 14/05/2004, 08h38
  3. utilisation de for each
    Par billoum dans le forum ASP
    Réponses: 5
    Dernier message: 19/03/2004, 15h30
  4. [VB6] For Each ... In ...
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 03/02/2003, 12h56
  5. [Kylix] Demande de confirmation Kylix Delphi
    Par mailstef dans le forum EDI
    Réponses: 3
    Dernier message: 21/10/2002, 10h17

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