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 :

Affichage fonction récursive


Sujet :

avec Java

  1. #1
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut Affichage fonction récursive
    Bonjour

    j'aurais besoin d'un petit coup de mains sur un problème de fonction récursive.

    J'ai une collection d'objets simples et d'objets composites composés eux de plusieurs pièces simples caractérisées toutes par un nom et un préfixe.

    le but de ma fonction est d'afficher un léger décalage à l'écran des pièces simples constituant ma pièce composite de ce style.

    Trousse à outils
    clés
    marteau
    tournevis
    etc....

    Voici ce que j'ai fait jusqu'à présent . Ca m'affiche bien mes pièces mes ça ne me créé pas le décalage... Merci pour l'aide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void affiche(int nivo){
    for (int i=0; i<listeComposant.size();i++){
            Piece p=listeComposant.get(i);
            System.out.print('\t');
            System.out.println(p.getNom()+" - "+p.prefixe());
            if(p instanceof PieceComposite)
            p.afficheComposant(nivo+1);
                 }    
    }

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    La console ne gère pas les tabulations, utilise un décalage par des blancs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    je suis sous eclipse...

  4. #4
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.out.print('\t');
    System.out.println(p.getNom()+" - "+p.prefixe());
    Devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("    "+p.getNom()+" - "+p.prefixe());
    ?

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par le.nono Voir le message
    je suis sous eclipse...
    C'est pas grave
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    Citation Envoyé par michon Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    System.out.print('\t');
    System.out.println(p.getNom()+" - "+p.prefixe());
    Devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("    "+p.getNom()+" - "+p.prefixe());
    ?
    lol au moderateur !

    ce code est le même que ce que j'ai mis a la place des espaces je met une tab....

    le probleme se situe je pense que mon appelle récursif ne fonctionne pas .... et min nivo je ne comprend pas à quoi il sert dans l'implementation de la methode...

  7. #7
    Membre éclairé
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Par défaut
    La console ne gère pas les tabulations
    Comment ça ?? Le \t marche très bien que ce soit sous dos, linux ou eclipse non ?

  8. #8
    Membre chevronné

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 246
    Par défaut
    Ah ce n'est pas ton code... cela explique le manque de compréhension !

    Il faudrait que tu poste le détail des méthodes appelées, car il est difficile de deviner leur fonctionnement.

  9. #9
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    ca serait trop long malheureusement . getNom() tous le monde comprendra, prefixe() c'est la ref de la piece donnée dans le contructeur.

    Voici un exemple de ce que ça me donne:
    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
    nom : roue de brouette
    reference : 021512
    prix : 68.0 €
    garantie : 9 mois
    duree de fabrication : 8 jour(s)
    duree de montage atelier : 1 jour(s)
    prix du montage : 15.0 €
    composants : 
        pneu - 004741
        chambre à air - 004565
        jante - 014541
        rayon - 004748
        rayon - 004748
        rayon - 004748
        disque de jante – 001214

  10. #10
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    voici ce que je souhaiterais avoir ma jantes est composé de plusieurs piece

    PieceSimple et PieceComposite ont ete ajouté dans une arrayListe et chaque piece composite est composée de piece simple en dessous. Ces instances proviennent de classes qui héritent d'une super classe Piece.


    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
    nom : roue de brouette
    reference : 021512
    prix : 68.0 €
    garantie : 9 mois
    duree de fabrication : 8 jour(s)
    duree de montage atelier : 1 jour(s)
    prix du montage : 15.0 €
    composants : 
        pneu - 004741
        chambre à air - 004565
        jante - 014541
                    rayon - 004748
        		rayon - 004748
        		rayon - 004748
        		disque de jante - 001214

  11. #11
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par super_toinou Voir le message
    Comment ça ?? Le \t marche très bien que ce soit sous dos, linux ou eclipse non ?
    Oui, autant pour moi...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Tu veux autant de tabultation que de niveaux c'est ca ?
    Dans ce cas il suffit de le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (int t = 0; t<nivo; t++)
          System.out.print('\t');
    a++

  13. #13
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    non c'est pas cela mais je pense que c'est difficile de l'expliquer comme cela, tant pis. merci pour le coup de main...

  14. #14
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ben tu veux obtenir quoi alors ???

    a++

  15. #15
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    j'ai une collection d'objet composé d'objet simple, et d'autre composé de plusieurs sous objet.
    je souhaiterais afficher les sous objets avec un leger decalage par rapport à leur objet de reference .

    Comme une arboresecence quoi avec un titre et des sous parties...

  16. #16
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    bon je crois que je vous ai deja fatigué, tant pis, salut !

  17. #17
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Tout ca parce que tu n'as pas eu la réponse un heure après


    Ton explication revient bien à ce que j'avais compris... et du coup je ne comprend toujours pas pourquoi mon code ne te convient pas...

    a++

  18. #18
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Ton explication revient bien à ce que j'avais compris... et du coup je ne comprend toujours pas pourquoi mon code ne te convient pas...
    J'avais compris la même chose et j'avais préparé une réponse similaire à une variation près...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public void fonctionRecursive(int level)
    {
       String decal = "";
       for (int i =0; i < level; i++)
       {
          decal += "\t";
       }
     
       // Utiliser "decal" devant toutes les sorties
       ...
     
    }
    C'est presque la même chose, sauf pour l'usage, mais il aurait pu le déduire

    Meilleurs vœux pour cette nouvelle année
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  19. #19
    Membre averti
    Inscrit en
    Décembre 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 22
    Par défaut
    merci pour les réponse en reflechissant un peu j'ai compris ce que vous essayé de me dire merci. Mon prog fonctionne sous eclipse, c'est cool!

    Mais c'est pas fini

    J'essaie de le faire tourner sous Linux. Mon package est ok ma CLASSPATH est bien parametrée tout mes programmes sont bien compilés, sauf qu'il m'affiche: java.lang.NoClassDefFoundError !!! je comprend qu'il ne retrouve pas mes classes, mais pourtant elles sont bien là ... SGLURP !

  20. #20
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    C'est peut-être un problème de majuscules/minuscules (classique).
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Fonction récursive pour affichage progressif.
    Par defacta dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/06/2009, 16h22
  2. Réponses: 1
    Dernier message: 15/07/2008, 23h59
  3. [MySQL] Fonction récursive pour affichage arborescence
    Par Mister Paul dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 01/12/2007, 19h30
  4. Fonction récursive renvoi sur page d'erreur
    Par peck dans le forum Langage
    Réponses: 1
    Dernier message: 23/12/2005, 10h08
  5. Problème de fonction récursive avec un TcxDBTreeList
    Par isachat666 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 05/12/2005, 13h12

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