Compatibilidade com Arrays Multidimensionais:
- O laço for-each também pode ser usado para iterar arrays multidimensionais em Java.
- Em Java, arrays multidimensionais são tratados como arrays de arrays (e.g., um array bidimensional é um array de arrays unidimensionais).
Iteração em Arrays Multidimensionais:
- Cada iteração do laço for-each em um array multidimensional recupera um array de dimensão N-1.
- A variável de iteração no laço externo deve ser compatível com o tipo de array que está sendo obtido.
Exemplo de Código:
class ForEach2 {
public static void main(String args[]) {
int sum = 0;
int nums[][] = new int[3][5];
// Preenchendo o array nums com valores
for(int i = 0; i < 3; i++)
for(int j = 0; j < 5; j++)
nums[i][j] = (i+1)*(j+1);
// Usando o laço for-each para iterar e somar valores
for(int x[] : nums) {
for(int y : x) {
System.out.println("Value is: " + y);
sum += y;
}
}
System.out.println("Summation: " + sum);
}
}
Saída: =
O programa exibe cada valor do array nums e a soma total dos valores.
Detalhes Importantes:
A variável x no laço externo é declarada como um array unidimensional (int x[]), pois cada iteração recupera um array unidimensional de nums.
O laço interno itera sobre os elementos individuais desses arrays unidimensionais.
Aplicações do Laço for-each:
O laço for-each é útil em algoritmos que necessitam percorrer um array sequencialmente, como em buscas lineares, cálculos de média, ou busca de valores mínimos e máximos.
Exemplo de Busca em Array:
class Search {
public static void main(String args[]) {
int nums[] = { 6, 8, 3, 7, 5, 6, 1, 4 };
int val = 5;
boolean found = false;
// Usando o laço for-each para procurar um valor no array
for(int x : nums) {
if(x == val) {
found = true;
break;
}
}
if(found)
System.out.println("Value found!");
}
}
Saída: O programa imprime "Value found!" se o valor val for encontrado no array nums.
Limitações:
O laço for-each só percorre o array do início ao fim, o que pode parecer limitante, mas é ideal para muitos algoritmos como buscas e cálculos simples. Ou seja, de forma crescente de index. Se quiser do fim pro inicio não tem como.
Top comments (0)