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 :

[Débutant] Problème boucle for


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Par défaut [Débutant] Problème boucle for
    Bonjour,

    J'ai fait un programme pour explorer un fichier.
    Il y a quand même quelque chose que je comprends pas
    Un moment j'ai un dossier qui contient 2 fichiers. Normalement, le programme ne dervrait pas re rentrer dans le for car la longueur du tableau = 2 (vérifier en l'affichant avec la variable sol et pourtant il rentre et remonte un dossier au dessus et m'affiche sol=8. Je comprends plus rien!!.

    Voici l'arborescence de mon dossier sitecss:

    sitecss/css/
    sitecss/images/
    sitecss/javascript/
    sitecss/asso.html
    sitecss/histoire.html
    sitecss/index.html
    sitecss/media.html
    sitecss/test.doc

    sitecss/css/ie.css
    sitecss/css/nt.css

    ...etc juste avec cette arboresence je peux poser mon problème
    sol = 2 quand il rentre dans le sous-dossier sitecss/css et ensuite il rentre encore dans la boucle et passe sol à sol = 8 ??!!


    Mon programme:


    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     import java.io.*; 
    import javax.swing.JOptionPane; 
     
    class Exploration 
     
    { 
     
        public static void main (String [] args) 
     
     
            { 
     
                File toto= new File("sitecss"); 
                Exploration.recu(toto); 
                System.exit(0); 
     
            } 
     
     
        private static void recu(File toto) 
     
            { 
                String couin ="couin"+toto.toString();  
                JOptionPane.showMessageDialog(null,couin); 
                File [] tata= toto.listFiles(); 
                JOptionPane.showMessageDialog(null,tata); 
                for (int i = 0 ; i<tata.length ; i++) 
     
                    { 
                        int sol = tata.length; 
     
                        JOptionPane.showMessageDialog(null,sol); 
                        if (tata[i].isDirectory()) 
     
                            { 
     
                            toto= new 
     
                            File(tata[i].toString()); 
     
                            JOptionPane.showMessageDialog(null,toto); 
     
                            recu (toto); 
     
                            } 
     
                        else 
     
                            JOptionPane.showMessageDialog(null,tata[i]); 
     
                    } 
     
            } 
     
    }
    [ Modéré par Viena ]
    Ajout balises de code : Pensez aux balises [code], votre message est plus lisible et la lecture plus facile.

    Les Règles du Forum



  2. #2
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Salut !

    Alors déjà, tu ne postes pas dans le bon forum...
    En ce qui concerne ton problème, tu fais une boucle qui part de i = 0 jusqu'à i = tata.length, si tu ne spécifies pas que ton nombre doit être supérieur ou égal à 2. Ta boucle sera toujours effectuée...
    +++
    Ju

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Par défaut
    Merci bcp, désolé de ne pas avoir posté au bon endroit, je vais lire la F.A.Q.

    En fait j'ai bien précisé i<tata.length.

    Donc la boucle for incrémente i de + 1 à chaque fois.

    tata.length = 2 et ensuite il rerentre dans la boucle for et il est égal à 8.

    C'est à partir d'ici que je ne comprends plus.

    Quand i arrive à 2 (tata.length=2) il ne devrait pas rerentrer: car i = 2 et non i <2 , car il vient de s'incrémenter et que sa valeur est passé à 2.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Par défaut
    Merci de l'avoir déplacé.

  5. #5
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Pour te renseigner sur le changement de valeur, pense au fait que tu utilises la recursivité dans ton algo, ce qui complexifie un poil la compréhension de ta boucle FOR ...

    Normalement, si je comprend bien le fonctionnement de ton algo ... tu devrais avoir lors du premier tour un tata.length = 8 (dossier siteCSS) et lors du second affichage, un tata.length=2 puisqu'il est dans le dossier CSS (qui contient 2 fichiers), etc. pour le parcours de CSS. Ensuite, il reviendra a 8 en ressortant de CSS et avant d'entrer dans le second sous dossier en sachant que ton i passera a 2 ... et ainsi de suite ...

    Par contre je ne vois pas ce que vous entendez par la verification qu'il est >= à 2 ... j'ose croire que les conditions de la boucle FOR sont correctes et vont suffir au bon fonctionnement de l'algo ... essaie d'afficher la valeur de ton "i" dans le but que l'on voit mieux le déroulement des opérations et que tu saches OU devient infinie ta boucle

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 7
    Par défaut
    Merci de ton aide!

    Effectivement j'utilise le principe de la récursivité, le problème vienderait peut être de la.

    J'ai déja crée une variable et j'affiche sa valeur ensuite pour la controler:

    int sol = tata.length;

    JOptionPane.showMessageDialog(null,sol);
    if (tata[i].isDirectory())

    Le problème vient qu'un moment cette variable est égale à 2 ( quand il est dans le dossier css) et qu'ensuite cette variable = 8. il refait un tour de la boucle for il ne revient pas au début de la fonction, pour en être sur j'avais aussi utiliser des méthodes JOptionPane...etc pour le vérifier.
    Il remonte d'un sous dossier en fait. en fin de compte ce programme marche très bien, mais comment marche cette boucle for reste un mystère pour moi.
    Comment fait t'il pour repasser de 2 à 8 si je lui dis <2 il devrait arrêter la boucle for et revenir à la ligne de mon prgramme java ou j'apelle cette fonction récursive.

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

Discussions similaires

  1. [Débutant] une boucle for me rend fou.
    Par SirDarken dans le forum Langage
    Réponses: 6
    Dernier message: 12/09/2006, 23h25
  2. [VBA-E, Débutant] Problème Boucle for
    Par strifer dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 24/08/2006, 12h30
  3. Grand Débutant : problème boucle et variable
    Par carelha dans le forum Langage
    Réponses: 2
    Dernier message: 02/08/2006, 19h33
  4. [FLASH 8] Problème Boucle For
    Par Begood dans le forum Flash
    Réponses: 6
    Dernier message: 21/03/2006, 11h36
  5. [XML][XSLT] Débutant {Probléme avec For-each-group}
    Par Silvia12 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/01/2006, 21h38

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