Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ligne de code que je ne comprend pas

Anonyme
    17 février 2012 à 17:43:51

    Bonjour,

    Je suis en train de lire des codes sources pour voir un peut comment coder, et apprendre certaines choses.

    Cependant, je suis tomber sur ceci :

    for(Block current : blocks) {
       // ...
    }
    


    Qu'est-ce que cela signifie ?

    Je connais les for (int i = 0; i < 5; i++) mais pas celui du dessus...

    Merci,
    • Partager sur Facebook
    • Partager sur Twitter
      17 février 2012 à 17:55:36

      Pour toute instance d'une classe implémentant "Iterable", on peut écrire une boucle for de ce style depuis Java 5.

      http://java.developpez.com/faq/java/?p [...] RD_for_etendu


      (dans ton cas : blocks est sans doute un Iterable<Block> )
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        17 février 2012 à 17:59:08

        Un "Iterable" ?

        Qu'est-ce ?
        • Partager sur Facebook
        • Partager sur Twitter
          17 février 2012 à 18:00:56

          Une interface : http://docs.oracle.com/javase/6/docs/a [...] Iterable.html


          Mais blocks peut également être un tableau (Block[] blocks) éventuellement, on peut parcourir les tableaux avec la boucle "for étendue".

          (si tu comprends pas tout, continue à lire le tutoriel et retiens juste pour l'instant que tu peux parcourir une "collection" d'objets d'une autre façon que par le for classique, tu pigeras sans doute les détails plus tard)
          (et si t'es curieux le lien que je t'ai donné explique ça très bien :) )
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            17 février 2012 à 18:12:11

            Oui, je pense que Block est un tableau.

            Car j'ai cette ligne de code aussi (dans un fichier level.java) :
            private ArrayList<Block> blocks = new ArrayList<Block>();
            


            D'ailleurs, cette ligne veut dire la même chose que cette ci ?
            private Block[INFINI] = new Block[INFINI];
            
            • Partager sur Facebook
            • Partager sur Twitter
              17 février 2012 à 18:19:17

              Non, c'est "blocks" le tableau. "Block" est une classe.
              Block[] blocks = new Block[10];
              

              Par exemple. (ta ligne numéro 2 c'est n'importe quoi, il manque le nom de la variable)

              Dans le premier cas tu utilises manipules une ArrayList, une collection d'objets (chacun des objets est un Block), définie dans la bibliothèque standard Java.
              C'est à la fois une List une Collection un Iterable, ... (ces interfaces sont les "contrats" que remplit la classe ArrayList, donc on sait qu'on peut itérer dessus (Iterable), que les éléments sont ordonnés à l'intérieur (List), qu'on peut y ajouter, enlever des objets ou la transformer en tableau (Collection).
              Grosso modo c'est "comme" un tableau dont la taille peut varier.
              Un tableau a, en Java, une taille fixe.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                17 février 2012 à 19:05:08

                Voilà un autre petits bouts de code.

                f = new File(path);
                fis = new FileInputStream(f);
                		
                int currentByte;
                String currentStr = new String();
                		
                while ((currentByte = fis.read()) != -1){
                	currentStr += (char)currentByte;
                			
                	if (currentStr.endsWith(System.getProperty("line.separator"))){
                		read(currentStr); // Une fonction que je n'ai pas encore lu
                		currentStr = new String();
                	}
                }
                


                Donc là, plusieurs problèmes :
                • while ((currentByte = fis.read()) != -1){ Veut dire : Lis tout le fichier ?
                • currentStr += (char)currentByte; Veut dire : Lis le caractère ? Du coup, ne va pas avec la ligne 1...
                • if (currentStr.endsWith(",")){ Là, je vois pas.
                • Partager sur Facebook
                • Partager sur Twitter

                Ligne de code que je ne comprend pas

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown