java:while loop - 在进入大括号之间的语句之前用分号语句?

时间:2012-09-30 02:55:23

标签: java sorting while-loop cycle-sort

我在stackoverflow上查看了另一个页面并遇到了循环排序的工作实现,但我不明白在while循环中花括号之前如何使用分号的语句。我认为while循环应该完全终止,一旦找到带分号的语句就不会采取进一步的操作,那么大括号内的代码是如何执行的呢?乍一看,我会将此解释为“var”随着while循环的每次迭代而递增 - 但我知道情况并非如此,因为将其从该位置移除并将“var ++”放入花括号内会导致无限环。

究竟在哪个条件下“var”递增?解释或解释类似语法的链接:

while (checkSomeBool) var++;
{
   //other stuff happening in here
}

将不胜感激。谢谢。以下是从CycleSort

获取的代码
public static final <T extends Comparable<T>> int cycleSort(final T[] array) {
int writes = 0;

// Loop through the array to find cycles to rotate.
for (int cycleStart = 0; cycleStart < array.length - 1; cycleStart++) {
  T item = array[cycleStart];

  // Find where to put the item.
  int pos = cycleStart;
  for (int i = cycleStart + 1; i < array.length; i++)
    if (array[i].compareTo(item) < 0) pos++;

  // If the item is already there, this is not a cycle.
  if (pos == cycleStart) continue;

  // Otherwise, put the item there or right after any duplicates.
  <while (item.equals(array[pos])) pos++;
  {
    final T temp = array[pos];
    array[pos] = item;
    item = temp;
  }
  writes++;

  // Rotate the rest of the cycle.
  while (pos != cycleStart) {
    // Find where to put the item.
    pos = cycleStart;
    for (int i = cycleStart + 1; i < array.length; i++)
      if (array[i].compareTo(item) < 0) pos++;

    // Put the item there or right after any duplicates.
    while (item.equals(array[pos])) pos++;
    {
      final T temp = array[pos];
      array[pos] = item;
      item = temp;
    }
    writes++;
  }
} 
return writes;

}

2 个答案:

答案 0 :(得分:4)

while循环以var++

结尾
while (checkSomeBool) var++; // while ends here

之后的代码根本不属于while循环。

{
   //other stuff happening in here - not part of the while loop
}

答案 1 :(得分:3)

类C语言允许您将任意代码括在大括号中以创建块作用域,无论是否有其他语法结构。
大括号中的代码在循环之后作为普通代码执行。

如果您完全取出while行,它仍会继续运行。