for(int i : x) 是做啥的? [复制]
Posted
技术标签:
【中文标题】for(int i : x) 是做啥的? [复制]【英文标题】:What does for(int i : x) do? [duplicate]for(int i : x) 是做什么的? [复制] 【发布时间】:2015-06-17 18:57:57 【问题描述】:我是 Java 新手。我正在阅读某人对问题的解决方案,我遇到了这个问题:
int[] ps = new int[N];
for (int i = 0; i < N; i++)
ps[i] = input.nextInt();
int[] counts = new int[1005];
for (int p : ps)
counts[p]++;
最后两行是做什么的?
【问题讨论】:
变量p
覆盖数组ps
。你可以玩一下它,看看它是如何工作的,例如在循环中打印p
的值。
这是增强的 for 循环。 p 是一个局部变量
【参考方案1】:
这是一个 for-each 循环。它将p
设置为ps
的第一个元素,然后运行循环体。然后将p
设置为ps
的第二个元素,然后运行循环体。以此类推。
大概是以下简称:
for(int k = 0; k < ps.length; k++)
int p = ps[k];
counts[p]++;
【讨论】:
【参考方案2】:For-each 循环(高级或增强型 For 循环):
Java5 中引入的 for-each 循环。主要用于遍历 数组或集合元素。 for-each 循环的优点是 它消除了错误的可能性并使代码更 可读。
语法
for(data_type variable : array | collection)
来源:Java For Each Loop
在您的情况下,此循环正在迭代 Array
没有 For Each 循环的等效代码
for (int i=0;i<ps.length;i++)
int p=ps[i];
counts[p]++;
【讨论】:
p
不是数组ps
的元素的索引
@singhakash,我试图向他解释 For-Each 循环,计数器如何递增,没有进行逻辑解释,仍在编辑它!【参考方案3】:
这是一个 for 循环。 for (int p : ps)
迭代 ps
int 数组中的整数
【讨论】:
【参考方案4】:该行正在遍历数组的每个索引,并在 p
变量的序列中取出其值。您可以通过以下方式检查
for (int p : ps) // if ps is 1,2,3
System.out.print(p+" "); // it will print 1 2 3
counts[p]++;
【讨论】:
以上是关于for(int i : x) 是做啥的? [复制]的主要内容,如果未能解决你的问题,请参考以下文章