【问题标题】: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 是一个局部变量

标签: java for-loop


【解决方案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]++;
      }
      

      【讨论】:

        猜你喜欢
        • 2015-06-17
        • 2017-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-31
        • 1970-01-01
        • 1970-01-01
        • 2011-05-04
        相关资源
        最近更新 更多