Carregando...

for-each em Java

Guarde três números inteiros em um array chamado slots: 2, depois 4, depois 6. Escreva for (int n : slots) e imprima n dentro das chaves. A tela deve mostrar três linhas: 2, depois 4, depois 6. Nesta página você não escreve um contador de índice. Cada passagem entrega ao nome n o próximo valor do array. Esse percurso é o que esta página ensina.

Um nome para cada valor do array

Crie um arquivo de programa pequeno chamado Pack.java. O public class da primeira linha deve coincidir com o nome do arquivo: public class Pack. Não deixe um nome de classe antigo Skip ou Pulse neste arquivo; o compilador espera que o nome da classe e o do arquivo coincidam.
Dentro de main, guarde primeiro o array:
int[] slots = {2, 4, 6};
Essa linha não imprime nada. Ela só guarda três números inteiros sob o nome slots. Depois o laço for-each:
for (int n : slots) {
System.out.println(n);
}
A palavra for continua em minúsculas. Dentro dos parênteses ficam três peças com dois pontos no meio: o tipo int, o nome n para um elemento, depois os dois pontos, depois o nome do array slots. Esses dois pontos não são um rótulo case nem um separador de caminho. Eles marcam «cada valor de slots entra em n». As chaves guardam o corpo. System.out.println(n); escreve o valor atual sem aspas em torno de n. Salve o arquivo antes de compilar.

Programa que imprime 2 depois 4 depois 6

Esta é a versão que você compila primeiro.

percurso do array int

java
public class Pack {
    public static void main(String[] args) {
        int[] slots = {2, 4, 6};
        for (int n : slots) {
            System.out.println(n);
        }
    }
}

Na pasta que guarda Pack.java, execute javac Pack.java. Quando parênteses, chaves e dois pontos coincidem, o javac não escreve nenhuma linha própria. Depois execute java Pack — não java Pack.java. Tire o final .java do segundo comando. Os mesmos dois comandos funcionam no Windows e no macOS; esta página não precisa de outra ortografia de shell para nenhum dos sistemas. O programa deve imprimir três linhas e parar: 2, depois 4, depois 6. Não deve pedir que você digite. Se o terminal ficar esperando teclado, ainda há uma chamada nextLine de um exercício antigo no arquivo. Apague essa chamada e conserve o array mais o for-each acima. Uma linha errada na tela não significa que você precise reinstalar o JDK.

Percorra uma execução completa em ordem. slots guarda 2, depois 4, depois 6. A primeira passagem põe n em 2 e println escreve 2. A segunda passagem põe n em 4 e escreve 4. A terceira passagem põe n em 6 e escreve 6. Depois não há mais valores, então o laço termina. Nesta página você não escreveu int i = 0 nem i < slots.length. O cabeçalho for-each pede ao Java que visite cada valor guardado uma vez. O nome n é novo a cada passagem só no sentido de que guarda o próximo elemento; você ainda o declara uma vez no cabeçalho como int n.

Percorra um array String do mesmo modo

Mude o array guardado e o tipo do elemento para que cada valor seja uma palavra curta:
String[] tags = {"red", "blue"};
for (String t : tags) {
System.out.println(t);
}
Agora a tela deve mostrar duas linhas: red, depois blue. Os dois pontos ainda ficam entre o tipo do elemento e o nome do array. O corpo ainda imprime o nome que guarda um elemento.

percurso do array String

java
public class Pack {
    public static void main(String[] args) {
        String[] tags = {"red", "blue"};
        for (String t : tags) {
            System.out.println(t);
        }
    }
}

Compile e execute de novo: javac Pack.java, depois java Pack. Você deve ver duas linhas. Você substituiu o array int por um array String e combinou o tipo do nome do elemento com String. Depois de ver red e blue, pode colocar de volta a demo int. As duas versões são Java válido. Elas ensinam a mesma forma for-each com tipos de elemento diferentes.

Leia o percurso String mais uma vez. tags guarda red, depois blue. A primeira passagem põe t em red e imprime. A segunda passagem põe t em blue e imprime. Depois o laço termina. Aspas no literal do array marcam o texto guardado. println(t) sem aspas extras em torno de t escreve essas letras guardadas na tela.

Regras que mantêm for-each claro

Os parênteses devem guardar tipo, nome, dois pontos e nome do array nessa ordem. Escrever for (int n slots) sem os dois pontos faz o javac falhar. O tipo do elemento deve caber no array: int com um array int, String com um array String. Colocar int n ao lado de um String[] não é a forma que esta lição compila. As chaves ainda guardam o corpo quando o corpo tem uma ou mais linhas.

for-each não é o for contado da página Beat, e não é break da página Skip. O for contado escrevia início, teste e passo com um contador. for-each percorre valores já guardados em um array. break encerra um laço mais cedo; a primeira demo desta página imprime cada valor. Não deixe uma demo break de Skip ou um while de Pulse no mesmo main e se surpreenda por a tela mostrar 1 e 2 em vez de 2, 4, 6. O main desta sessão deve guardar só o array e o for-each.

Uma confusão comum é imprimir a própria sintaxe: System.out.println("for (int n : slots)");. Isso escreve os caracteres do cabeçalho. Não percorre o array. Outra confusão é System.out.println("n"); com aspas, que imprime a letra n a cada passagem em vez de 2, 4 e 6. Mantenha println(n) sem aspas quando quiser o valor do elemento na tela.

Se o array não tem elementos — por exemplo int[] slots = {}; — o corpo nunca roda e a tela fica em branco. Isso ainda é um for-each válido; as demos desta lição guardam pelo menos dois valores para você ver as linhas impressas. Quando mais tarde precisar de um número de índice na tela, o for contado volta; for-each serve para visitar valores sem gerenciar esse índice você mesmo. Mudar um valor dentro do laço com n = 9; não reescreve o slot do array nesta forma iniciante — trate n como o valor que você lê para imprimir, não como ferramenta para editar slots.

O que você pode fazer agora

Você pode guardar um array, escrever for (Type name : arrayName), e imprimir cada valor uma vez. Combinar o tipo do elemento com o array mantém o laço compilável. A próxima página é methods, onde você agrupa linhas sob um nome que pode chamar a partir de main.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
6
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo