-1

有人可以向我解释一下 for(int current : values) 是如何工作的。假设我们有这样的方法。谢谢

public int count(int[] values, int value)
{
    int count = 0;
    for (int current : values)
    {
    if (current == value)
        count++;
    }
    return count;
}
4

5 回答 5

3

它相当于:

for (int i = 0; i < values.length; i ++) {
    int current = values[i]
    ...
}

它被称为增强for循环。(其他编程语言可能使用for ... inor foreach,但它们的含义相同。)

这是 Oracle 网站上的一篇关于它的文章。

于 2013-04-13T15:35:23.077 回答
0

它不仅仅是一个 for,它是一个 foreach,它的工作原理是这样的:

public int count(int[] values, int value)
{
    int count = 0;
    for (int i=0;i<values.length;i++)
    {
    current = values[i];
    if (current == value)
        count++;
    }
    return count;
}
于 2013-04-13T15:36:17.940 回答
0

for-each 和等价的 for 语句具有这些形式。给出了两种基本的等效形式,取决于它是数组还是被遍历的 Iterable。在这两种情况下,都需要一个额外的变量,即数组的索引。

对于每个循环

for (type var : arr) {
   body-of-loop
}

相当于for循环

for (int i = 0; i < arr.length; i++) { 
   type var = arr[i];
   body-of-loop
}

更新:

Turbo C 不支持每个循环。但是同样的,你可以使用 C 的 for 循环结构来实现。

在这里阅读:For Each Loop 支持多种语言

于 2013-04-13T15:38:01.570 回答
0

它循环遍历values数组中的所有元素。与此相同,只是没有索引变量:

for (int i = 0; i < values.length; ++i) {
    int count = 0;
    if (current == values[i])
        count++;
    return count;
}

您可以将其视为“for each”循环。换句话说,对于 values 数组中的每个元素,执行此循环。

于 2013-04-13T15:35:19.327 回答
0
for(int current : values)

是一个 for-each 循环,类似于:

for(int i =0 ; i< values.length; i++)
于 2013-04-13T15:35:30.303 回答