【问题标题】:What means ';' inside of for statement?';' 是什么意思在 for 语句中?
【发布时间】:2011-10-20 15:28:28
【问题描述】:

我正在尝试理解下面的代码:

/**
   * Simple insertion sort.
   * @param a an array of Comparable items.
   */
  public static void insertionSort( Comparable [ ] a )
  {
      for( int p = 1; p < a.length; p++ )
      {
          Comparable tmp = a[ p ];
          int j = p;
          for( ; j > 0 && tmp.compareTo( a[j-1] ) < 0; j-- )
              a[ j ] = a[ j - 1 ];
          a[ j ] = tmp;
      }
  }

但我不确定for( ; ) 是什么意思,所以我需要你们的帮助。 抱歉,如果它是重复的,但我在这里和谷歌搜索,但到目前为止没有。

【问题讨论】:

  • 这只是简单地初始化变量j,因为你必须知道所有循环都有初始化、条件检查、递增/递减三部分

标签: java syntax insertion-sort


【解决方案1】:

for 循环的第一部分是循环开始之前发生的事情。通常用于分配变量。

“;”在它只是说“在循环开始之前我不想做任何事情”之前什么都没有(除了括号)。无需分配变量等。

【讨论】:

  • for 循环的所有 3 个部分都是可选的。因此,例如,您可以将for(;;) 用于无限循环。虽然我通常更喜欢使用等效的while (true)
  • 非常正确。 for(;;) 仅在测试时更可取,您可能希望添加变量等。而(true)绝对更具可读性。
  • 我本来想说你应该把它改成for(int j)...,但后来意识到他在循环下引用了j。但是,这意味着他无法完全删除 for 循环上方的行,而是需要 int j;for(j = p... 。所以,我回滚到你的版本,尽管它仍然有点错误。
  • 嗯,现在我明白了。谢谢大家,很有用,不过我更喜欢 while 声明而不是强硬,明白什么意思。
  • @Brian:哎呀——我必须承认,我很快就把它放进去了,而且我也不是 Java 程序员;)
【解决方案2】:

很简单:基本意思是

for(..a.. ; ..bb.. ; ..c..){ // }.

..a.. :是您初始化的内容(如果有)或将其留空。 ..b.. :一旦循环运行一次,您想要进行的任何检查。 ..c.. 循环运行一次后对变量的任何更改

【讨论】:

    【解决方案3】:

    我猜你正在徘徊第二个 for 循环语法。这只是一个没有任何初始化部分的常规 for 循环。 j 必须在循环之前声明,因为它在循环结束后在外部使用。

    【讨论】:

      【解决方案4】:

      这只是一个分隔符。 如果前面什么都没有,那说明部分逻辑是空的。 格式是

      for(  <stuff to do before starting the loop>
          ;
            <stuff to do before each iteration, and maybe give a value of 0 to terminate it>
          ;
            <stuff to do at the end of each iteration>
         )
      

      坦率地说,我觉得它非常灵活,因为不是每个循环都采用“为每个 xxx 执行此操作”的形式。 您在每个部分中添加的内容确实是任意的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-18
        • 2011-08-15
        • 1970-01-01
        • 2012-05-07
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多