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

Java Discussion :

fonction for en java


Sujet :

Java

  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2011
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 119
    Par défaut fonction for en java
    bonsoir
    j'ai un pb et je penses que c'est facile à résoudre ça mais je ne comprends pas pourquoi je n'arrives pas à le résoudre.
    en fait je veux faire une fonction qui permet de trouver un objet qui est dans mon cas une page Facebook en lui donnant son identifiant.
    voici le code que j'ai fait normalement il manque quelque chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public PageFacebook trouverPage(PageFacebook p,int id){
    		for(int i=0;i<p.getAmis().size();i++){
    			PageFacebook amiDeMonAmi=p.getAmis().get(i);
    			if(amiDeMonAmi.getIdPage()==id){
     
    			}
    		}
    		return amiDeMonAmi;
    	}

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Bonjour,

    1- amiDeMonAmi n'est visible que dans la boucle for, donc quand tu faits return, il n'est plus visible --> erreur de compilation.
    2- la méthode get n'est pas la meilleur façon de parcourir une List, utilise son iterator ou un for-each.

    A+.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Par défaut
    Ca, ca marche mais ça prend pas trop en compte le cas ou la page n'a pas été trouvée, pour ça, je te laisse chercher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public PageFacebook trouverPage(PageFacebook p,int id){
    		PageFacebook amiDeMonAmi = null;
    		for(int i=0;i<p.getAmis().size();i++){
    			amiDeMonAmi=p.getAmis().get(i);
    			if(amiDeMonAmi.getIdPage()==id){
     
    			}
    		}
    		return amiDeMonAmi;
    	}

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Ben si getAmis() retourne un List, utiliser get() pour le parcourir n'est pas la meilleur façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(PageFacebook pfb : p.getAmis()){
    	amiDeMonAmi=pfb;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(Iterator<PageFacebook> iterator = p.getAmis().iterator(); iterator.hasNext(); ){
    	amiDeMonAmi=iterator.next();
    A+.

  5. #5
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(PageFacebook pfb : p.getAmis()){
    	amiDeMonAmi=pfb;
    Pourquoi pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(PageFacebook amiDeMonAmi : p.getAmis()){
    ??

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par BenWillard Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(PageFacebook pfb : p.getAmis()){
    	amiDeMonAmi=pfb;
    Pourquoi pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(PageFacebook amiDeMonAmi : p.getAmis()){
    ??
    Parce qu'il doit retourner un objet, et l'élément déclarer dans la boucle for n'est visible qu'à l'intérieur de for. Si amiDeMonAmi est déclaré avant la boucle for, tu ne peux la redéclarer avec for(PageFacebook amiDeMonAmi.



    Tu auras une erreur de compilation.

    A+.

  7. #7
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Ah oui j'avais zappé le return

    Mais il y a aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(PageFacebook amiDeMonAmi : p.getAmis())
         if(amiDeMonAmi.getIdPage()==id) return amiDeMonAmi;

  8. #8
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par BenWillard Voir le message
    Ah oui j'avais zappé le return

    Mais il y a aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(PageFacebook amiDeMonAmi : p.getAmis())
         if(amiDeMonAmi.getIdPage()==id) return amiDeMonAmi;
    Dans ce cas il doit mettre un return null; après le boucle for. Mais je ne suis pas très fan de l'utilisation de plusieur return dans une fonction.

    A+.

  9. #9
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Par défaut
    Citation Envoyé par BenWillard Voir le message
    Ah oui j'avais zappé le return

    Mais il y a aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(PageFacebook amiDeMonAmi : p.getAmis())
         if(amiDeMonAmi.getIdPage()==id) return amiDeMonAmi;
    Avec un return null après le for au cas où id n'a pas été trouvé. Il faudra que l'appelant de la méthode gère le cas où elle renvoie null

  10. #10
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par Huitzilopochtli Voir le message
    Ca, ca marche mais ça prend pas trop en compte le cas ou la page n'a pas été trouvée, pour ça, je te laisse chercher.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public PageFacebook trouverPage(PageFacebook p,int id){
    		PageFacebook amiDeMonAmi = null;
    		for(int i=0;i<p.getAmis().size();i++){
    			amiDeMonAmi=p.getAmis().get(i);
    			if(amiDeMonAmi.getIdPage()==id){
     
    			}
    		}
    		return amiDeMonAmi;
    	}
    C'est faux, ça va toujours retourner le dernier ami de la liste.

    A+.

  11. #11
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Mais je ne suis pas très fan de l'utilisation de plusieur return dans une fonction.
    Non mais là ça simplifie les choses, tout en rendant le code plus performant, on aurait tort de se priver...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(PageFacebook amiDeMonAmi : p.getAmis())
         if(amiDeMonAmi.getIdPage()==id) return amiDeMonAmi;
    return null;

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par BenWillard Voir le message
    Non mais là ça simplifie les choses, tout en rendant le code plus performant, on aurait tort de se priver...
    en mettant seulement un break dans le boucle for, la différence de performance ne serait qu'un millième de seconde.
    En fait, je n'utilise qu'un seul return quand on veut retourner un objet dans une fonction pour une meilleur lisibilité de code.

  13. #13
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    En fait, je n'utilise qu'un seul return quand on veut retourner un objet dans une fonction pour une meilleur lisibilité de code.
    Si ça te plaît à toi, c'est cool. Mais moi je vois juste qu'on a remplacé "plusieurs returns" par "une variable qui sera renvoyée par le return et qui est assignée à plusieurs endroits."
    Du style Visual Basic. Je suis guère plus convaincu.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Mais moi je vois juste qu'on a remplacé "plusieurs returns" par "une variable qui sera renvoyée par le return et qui est assignée à plusieurs endroits."
    Et oui .
    Mais c'est une convention de coder suggérée par sun et je le trouve aussi pratique.

    A+.

  15. #15
    Membre confirmé
    Inscrit en
    Octobre 2011
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 119
    Par défaut
    merci pour toutes ces réponses mais s'il vous si plait si quelqu'un peut m'expliquer encore plus le code proposé car j'ai pas bien compris.
    vous m'avez proposez ce code là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(PageFacebook pfb : p.getAmis()){
    	amiDeMonAmi=pfb;
    s'il vous plait expliquez plus ce code là et ou il faut mettre le return car ça le pb.

  16. #16
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    PageFacebook amiDeMonAmi = null;
    	for(PageFacebook pfb : p.getAmis()){
    		amiDeMonAmi=pfb;
    		if(amiDeMonAmi.getIdPage()==id){
    			break
    		}
    	}
    return amiDeMonAmi;

  17. #17
    Membre confirmé
    Inscrit en
    Octobre 2011
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 119
    Par défaut
    merci pour votre réponse mais s'il vous plait qu'est ce qu'elle veut dire cette instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PageFacebook pfb : p.getAmis()

  18. #18
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Par défaut
    Une petite lecture te fera du bien .

  19. #19
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Pour moi il est évident que la version sans break est plus claire et plus efficace : moins de mots, moins d'assignations, moins de variables... Je ne vois aucun avantage à l'autre version.

  20. #20
    Membre confirmé
    Inscrit en
    Octobre 2011
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 119
    Par défaut
    merci pour le lien j'ai bien compris et merci pour le code proposé aussi, ça va le pb est résolu.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Système] fonction exec() avec Java
    Par alexK73 dans le forum Langage
    Réponses: 4
    Dernier message: 11/04/2007, 17h21
  2. Fonction de fermeture java
    Par naima2005 dans le forum Général Java
    Réponses: 11
    Dernier message: 25/05/2006, 19h08
  3. Fonction eval en java ?
    Par ramislebob dans le forum Langage
    Réponses: 2
    Dernier message: 12/01/2006, 00h22
  4. [Info] Appeler une fonction Ada95 depuis Java
    Par mmathieu dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 15/09/2005, 09h42
  5. fonction for each key .......
    Par trialrofr dans le forum ASP
    Réponses: 13
    Dernier message: 10/01/2005, 14h29

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