Questão nº 77
Questão de Tecnologia da Informação · FCC TCE-GO 2022 (nº 77)
Considere a estrutura de repetição abaixo, escrita na linguagem de programação Java.
```
String[] estados = {"Goiás", "Paraná", "Rio de Janeiro", "São Paulo"};
I {
System.out.println(i);
}
```
Para que sejam exibidos os nomes dos estados contidos na array estados, a lacuna I deve se corretamente preenchida com a instrução
- Afor (String[] i : estados)
- Bfor (int i = 0; i<= estados.length ; i++)
- Cfor (Object i ; estados)
- Dfor (String i : estados) (alternativa correta)
- Efor (int i = 1; i<= estados.length; i++)
Resposta comentada
Gabarito Alternativa D
O loop for-each (também conhecido como enhanced for loop) no Java é uma forma simplificada de percorrer todos os elementos de uma coleção, como um array, sem precisar gerenciar índices. Ele lê "para cada elemento de um certo tipo dentro desta coleção, faça algo".
- (A) Incorreta: A sintaxe
for (String[] i : estados)indica queiseria um array de strings, masestadosé um array de strings individuais. O tipo deideve ser o tipo de cada elemento dentro deestados, que éString, nãoString[]. - (B) Incorreta: Esta é uma estrutura de loop for tradicional. No entanto, ela possui dois erros: 1) A condição
i <= estados.lengthcausaria um erro deArrayIndexOutOfBoundsExceptionao tentar acessar um índice além do limite do array (índices vão de 0 alength - 1). Deveria seri < estados.length. 2) OSystem.out.println(i);imprimiria o índice (0, 1, 2, 3) e não o nome do estado. Para imprimir o estado, seria necessárioSystem.out.println(estados[i]);. Armadilha da banca: Esta alternativa é a mais tentadora, pois usa uma estrutura de loop comum, mas está incorreta tanto na condição de parada quanto no que é impresso. - (C) Incorreta: A sintaxe
for (Object i ; estados)está incorreta para um loop for-each. Falta o caractere:entre a declaração da variável e a coleção. - (D) Correta: Esta é a sintaxe correta para um loop for-each.
String ideclara uma variávelido tipoStringque, a cada iteração, receberá um dos elementos do arrayestados. Assim,System.out.println(i);exibirá corretamente cada nome de estado. - (E) Incorreta: Similar à alternativa B, esta é uma estrutura de loop for tradicional com erros: 1)
int i = 1faria o loop começar do segundo elemento, ignorando o primeiro ("Goiás"). 2) A condiçãoi <= estados.lengthainda causaria umArrayIndexOutOfBoundsException. 3)System.out.println(i);imprimiria o índice (1, 2, 3, 4) e não o nome do estado.
Fonte: FCC TCE-GO 2022 Analista de Controle Externo - Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.