【问题标题】:Foreach loop into for loopforeach循环进入for循环
【发布时间】:2014-04-19 20:11:42
【问题描述】:

我不明白下面的 foreach 循环。有人可以把它写成一个“正常”的for循环吗? :)

public static String arrayToString (int[] a) {

    String result = "";

    for (int v : a) {
        result = result + v + " ";
    }

    return result;
}

【问题讨论】:

标签: java for-loop foreach


【解决方案1】:
public static String arrayToString (int[] a) {

    String result = "";

    for (int i = 0; i < a.length; ++i) {
         result = result + a[i] + " ";
    }

    return result;
}

【讨论】:

    【解决方案2】:
    for (int i = 0; i < a.length; i++) {
        result = result + a[i] + " ";
    }
    

    【讨论】:

      【解决方案3】:
      public static String arrayToString (int[] a) {
          String result = "";
          for (int idx = 0; idx < a.length; idx++) {
              result = result + a[idx] + " ";
          }
          return result;
      }
      

      【讨论】:

        【解决方案4】:

        您正在遍历数组 a 并将数组 a 中的每个元素保存在临时变量 v 中。

        正常的for循环可能是这样的:

        for (int i = 0; i < a.length; i++) {
            result = result + a[i] + " ";
        }
        

        【讨论】:

          【解决方案5】:

          很明显(顺便说一句,如果你想显示数组的内容,你就犯了一个错误):

          public static String arrayToString (int[] a) {
          
              String result = "";
          
              for (int v = 0; v < a.length; v++) {
                  result += a[v] + " ";
              }
          
              return result;
          }
          

          【讨论】:

            【解决方案6】:

            我不认为将 foreach 循环编写为“正常”的 for 循环是解释这一点的最佳方式。实际上很容易:foreach 将遍历数组 a,每次将数组中的下一个值分配给 int v。所以在第一次迭代时,int v 将是 a[0],在第二次迭代中它将是 a[1] 等,直到 a 中没有更多字段,然后停止。

            当您需要对集合中的所有内容执行某些操作时,Foreach 很有用,而无需显式计数器。如果需要计数,则需要使用普通的 for 循环。

            【讨论】:

              【解决方案7】:

              您对 each int type v 在我的 int 类型的 array 中所说的循环 定义为 a, 执行以下代码..

              { result = result + v + " "; }
              

              v 是本地定义的,只能在循环内使用。

              当提到“正常”循环时,您可能最熟悉索引 for 循环,如下所示:

              for(int i=0; i<a.length; i++)
              {
                 result = result + a[i] + " ";
              }
              

              您使用索引来跟踪您在循环中的任何时间在集合或列表中的位置,但是如果您只想遍历整个集合或列表,那么您可以使用 for each,如您的例子。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2018-01-14
                • 2012-10-02
                • 2019-04-04
                • 2018-08-20
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多