Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java for(inti:x)做什么?_Java_For Loop - Fatal编程技术网

Java for(inti:x)做什么?

Java for(inti:x)做什么?,java,for-loop,Java,For Loop,我是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]++; int[]ps=newint[N

我是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]++;
int[]ps=newint[N];
对于(int i=0;i

最后两行是做什么的?

这是一个for循环
for(int p:ps)
ps
int数组中迭代int,这是一个for-each循环。它将
p
设置为
ps
的第一个元素,然后运行循环体。然后将
p
设置为
ps
的第二个元素,然后运行循环体。等等

它大约是以下的缩写:

for(int k = 0; k < ps.length; k++)
{
    int p = ps[k];
    counts[p]++;
}
for(int k=0;k
该行在数组的每个索引上迭代,并在
p
varable中按顺序取出其值。您可以通过

for (int p : ps){            // if ps is {1,2,3}
   System.out.print(p+" ");  // it will print 1 2 3
   counts[p]++;
}
对于每个循环(高级或增强的循环): Java5中引入的for-each循环。主要用于导线测量 数组或集合元素。for each循环的优点是 它消除了出现bug的可能性,并使代码更加复杂 可读的

语法

for(data_type variable : array | collection){}  
资料来源:

在您的例子中,此循环正在迭代
数组

每个循环的等效代码

for (int i=0;i<ps.length;i++){
int p=ps[i];
counts[p]++;
}

        

用于(int i=0;它的变量
p
在数组
ps
范围内。你可以稍微玩玩一下,看看它是如何工作的,例如,在循环中打印
p
的值。这对循环来说是增强的。p是一个局部变量
p
不是数组
ps
元素的索引。singhakash,我试图解释他对于每个循环,计数器是如何递增的,不进行逻辑解释,仍在编辑它!!