我从未见过的C#迭代
c#
我正在 HackerRank 上练习编码,但我遇到了其中一个问题。我看着其他人如何处理它,并遇到了我以前从未见过的东西。
public static int jumpingOnClouds(List<int> c)
{
int count = 0;
for (int i = 0; i < c.Count - 1; i++)
{
if (c[i] == 0)
i++;
count++;
}
return count;
}
这个迭代应该通过一个整数数组。如果整数是 0,它需要一个步骤,如果它是 1,它什么都不做。在“if”语句中,它是:
if (c[i] == 0)
i++;
count++;
这段代码有效。但是我尝试像这样重写它:
if (c[i] == 0)
{
i++;
count++;
}
但它不像以前的代码那样工作。有人可以帮忙解释一下这个人做了什么,因为我不知道去哪里看或者这叫什么?
回答
如果if, while,for没有括号{ },它将运行第一行,然后存在于语句之外。
这个:
if (c[i] == 0)
i++;
count++;
其实是这个意思:
if (c[i] == 0)
{
i++;
}
count++;
没有括号的语句称为嵌入式语句。它与新创建的 if 语句作用域几乎相同,但存在差异。
- 只运行它到达的第一行/功能。
- 您不能在 Embedded 语句中定义变量。
- 没有创建新的作用域。