当前位置: 首页 > 知识库问答 >
问题:

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

云季同
2023-03-14

我在看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个答案

钱远
2023-03-14

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

如果在行中完全取出,它仍将运行。

郭兴平
2023-03-14

while循环以var

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

之后的代码根本不是while循环的一部分。

{
   //other stuff happening in here - not part of the while loop
}
 类似资料:
  • 问题内容: 我试图理解下面两个require语句之间的区别。 具体来说,s包装的目的是什么? 它们似乎都分配了电子模块的内容,但是它们的功能显然不同。 谁能给我一些启示? 问题答案: 第二个示例使用解构。 这将调用从所需模块导出的特定变量(包括函数)。 例如(functions.js): 包含在您的文件中: 现在您可以分别给他们打电话了, 相对于: 使用点表示法调用: 希望这可以帮助。 您可以在此

  • 我正在尝试编写一个正则表达式模式,并使用split函数对所有句点进行拆分,除非这些句点位于开括号和闭括号或花括号之间。我想我是对的,因为在一个在线正则表达式测试程序中,当我运行拆分时,它正确地突出显示了我想要拆分的周期,它拆分的不仅仅是周期,还创建了一个长列表。我想我正在做一些明显的事情,但似乎无法理解。请看下面的内容。谢谢 到目前为止我所拥有的: Regex到目前为止: .(? =([^]]([

  • 我正在尝试找到一种方法,使VSCode在我点击括号内的回车键到括号的开头时自动缩进项目,如下所示(类似于这篇文章)。这在Jupyter中运行良好,但我在VSCode中找不到相同的解决方案,也无法在线找到解决方案。有人知道如何通过VSCode中的预设来实现这一点吗?提前致谢。 当前: 渴望的: 编辑 @Shradha 虽然听起来与我正在寻找的内容相似,但您的建议并没有以我正在寻找的方式解决代码问题。

  • 问题内容: 我对以下代码行的语法感到困惑: 数据框对象由2列(“大脑”和“身体”)组成 当我打印x_values时,我得到这样的东西: 就dataframe对象的属性和方法而言,我知道pandas文档,但双括号语法使我感到困惑。 问题答案: 考虑一下: 来源DF: 选择一列-生成Pandas.Series: 选择DataFrame的子集-结果为DataFrame: 结论: 第二种方法允许我们从Da

  • 问题内容: 看一个Swift 示例: 该文档指出: …代码将该视图控制器分配给本地常量sourceViewController,并检查sourceViewController上的餐属性是否为nil。 问题:用逗号分隔时,Swift是否在if语句中让您有多个条件(例如,在此示例中,后面有逗号)? 还没有在文档中看到这一点。 问题答案: 是的,当你写 只有 正确完成所有分配, Swift才会执行的主体

  • 问题内容: 如果您不熟悉规则。这是关键点: 如果第一至第n 个 JavaScript程序形式的令牌是语法上有效,但第一至第n+1个ST令牌是不与存在n之间的换行符个令牌和第n+1ST令牌,则解析器试图插入n个令牌之间的虚拟分号后再次解析程序次和第n + 1 ST令牌。 该描述可能是不完整的,因为它没有解释@Dreas的示例。有人可以链接到完整的规则,还是可以查看示例为何使用分号?(我在JScrip