instrução for

4 respostas
oxfish

Pessoal estou com uma dúvida referente a estrutura de repetição for.
Gostaria de saber o que significa tal instrução, estou enviando uma parte do código, porém a maior dúvida está no comando for. Segue:

if (name.isDirectory()) 
         {
            String directory[] = name.list();
            System.out.println( "\n\nDirectory contents:\n" );
   
            for ( String directoryName : directory )
               System.out.printf( "%s\n", directoryName );

4 Respostas

cassio
oxfish:
Pessoal estou com uma dúvida referente a estrutura de repetição for. Gostaria de saber o que significa tal instrução, estou enviando uma parte do código, porém a maior dúvida está no comando for. Segue:
if (name.isDirectory()) 
         {
            String directory[] = name.list();
            System.out.println( "\n\nDirectory contents:\n" );
   
            for ( String directoryName : directory )
               System.out.printf( "%s\n", directoryName );
Essa "versão" do for está pegando cada String do array de strings directory e imprimindo a mesma. é a mesmíssima coisa que se vc escrevesse
for(int i = 0; i < directory.length; i++)
   System.out.printf( "%s\n", directoryName );

É só pensar assim: Sed eu já sei que quero percorrer o array inteiro, porque eu preciso ficar passando o tamanho do mesmo pro for? Essa versão do for já entende que vc quer percorrer o array inteiro...

ViniGodoy

Essa estrutura é chamada for each.
Na tradução para o português, para cada. No caso do seu comando, poderiamos le-lo como “Para cada directoryName na lista directory”

O que ela faz é percorrer uma lista, elemento-a-elemento. O elemento da vez é guardado na variável declarada dentro do for e é usado dentro do código:

for (TipoDeDadoDentroDaLista elemento : Lista) { //Roda um código para cada elemento da lista }

No seu caso, por exemplo, você tem uma lista de nomes de diretórios.
Então, o for irá imprimir cada um dos nomes de diretório da lista. O mesmo for pode ser reescrito da seguinte forma:

for (int i = 0; i &lt directory.length; i++) { String directoryName = directory[i]; System.out.printf( "%s\n", directoryName ); }

Para mais detalhes sobre o for each (como o que acontece no caso de for-eachs aninhados), dê uma olhada neste artigo, no próprio site da Sun.

Esse tipo de for só funciona do Java 5 em diante.

jackbutler
oxfish:
Pessoal estou com uma dúvida referente a estrutura de repetição for. Gostaria de saber o que significa tal instrução, estou enviando uma parte do código, porém a maior dúvida está no comando for. Segue:
if (name.isDirectory()) 
         {
            String directory[] = name.list();
            System.out.println( "\n\nDirectory contents:\n" );
   
            for ( String directoryName : directory )
               System.out.printf( "%s\n", directoryName );

Olá, pxfosh, tudo bem?

Bem... significa que para cada iteração, atribui-se o próximo elemento do array directory a variável String directoryName.
É válido lembrar que esse tipo de for (aprimorado) é utilizado apenas para listar elementos do array e não acessá-los/modificá-los, ou seja, o for que todos nós conhecemos (o do seu exemplo) será útil em alguns momentos.

Espero ter ajudado.
Abraço,

oxfish

Muito bom galera, ajudou bastante.
Valew!!

Criado 22 de abril de 2007
Ultima resposta 22 de abr. de 2007
Respostas 4
Participantes 4