instrução for

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:

[code] if (name.isDirectory())
{
String directory[] = name.list();
System.out.println( “\n\nDirectory contents:\n” );

        for ( String directoryName : directory )
           System.out.printf( "%s\n", directoryName );[/code]

[quote=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:

[code] if (name.isDirectory())
{
String directory[] = name.list();
System.out.println( “\n\nDirectory contents:\n” );

        for ( String directoryName : directory )
           System.out.printf( "%s\n", directoryName );[/code]

[/quote]
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…

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.

[quote=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:

[code] if (name.isDirectory())
{
String directory[] = name.list();
System.out.println( “\n\nDirectory contents:\n” );

        for ( String directoryName : directory )
           System.out.printf( "%s\n", directoryName );[/code]

[/quote]

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,

Muito bom galera, ajudou bastante.
Valew!!