我有这段代码:
int k;
for (k=0; k>-3; k=-2;); {
System.out.println(k);
}
输出为负四。我不明白为什么这个代码仍然运行,即使在for循环中的语句之后有一个半冒号。
答案 0 :(得分:4)
正如其他人在评论中指出的那样,在循环问题之上存在一些问题。首先,第三个分号是语法错误。其次,它应该是k-=2
而不是k=-2
,否则循环将永远不会结束。
清除后,此代码相当于:
int k;
for (k=0; k>-3; k-=2);
{
System.out.println(k);
}
与以下内容相同:
int k;
for (k=0; k>-3; k-=2);
System.out.println(k);
与以下内容相同:
int k;
for (k=0; k>-3; k-=2) {
}
System.out.println(k);
在for循环后使用分号,你要求一个什么都不做的for循环。之后System.out.println(k)
左右的括号只是普通括号。即使没有for
循环,您也可以将任何代码放在自己的范围内。
答案 1 :(得分:2)
您的代码没有按照您的说法执行操作。真的,尝试运行它。您可能打算输入减去等于(Date Open High Low Close Volume Adj Close
2/9/2016 26.639999 27.690001 26.51 26.82 13919100 26.82
2/8/2016 27.610001 27.969999 26.48 27.049999 24473600 27.049999
2/5/2016 29.059999 29.139999 27.73 27.969999 16077500 27.969999
2/4/2016 27.91 29.23 27.709999 29.15 28517000 29.15
2/3/2016 28.450001 28.610001 26.57 27.68 55527600 27.68
2/2/2016 29.32 30.23 28.129999 29.059999 34022500 29.059999
2/1/2016 29.27 29.790001 28.790001 29.57 12865800 29.57
1/29/2016 29.1 29.51 28.51 29.51 18718300 29.51
1/28/2016 30.59 30.629999 28.6 28.75 15420500 28.75
1/27/2016 29.9 30.530001 29.450001 29.690001 13269900 29.690001
1/26/2016 29.76 30.190001 29.620001 29.98 11422600 29.98
1/25/2016 29.959999 30.389999 29.66 29.780001 23095500 29.780001
)而不是等于 - 减去(-=
)。
接下来,在for循环后删除分号。有关此问题的解释,请参阅其他5个答案。
答案 2 :(得分:0)
if-condition后面有;
分号。因此,您的条件会立即终止,并且下一个以{
和}
分隔的块将在100%的时间内执行。
更改此
for (k=0; k>-3; k=-2;);
到此
for (k=0; k>-3; k=-2;)
答案 3 :(得分:0)
循环实际上并没有运行。嗯,确实如此,但不是代码中的循环。以下是发生的事情:
int k;
for(k=0; k>-3; k-=2;); // <-- this line is what is repeated
接下来,它会点击System.out.println
语句,该语句将打印k
( - 4)。
答案 4 :(得分:0)
你怀疑,循环体是空的。它运行完成,有两个完整的迭代(0,-2)。之后,k的值为-4,因此循环退出。然后,你有一个只能执行一次的匿名块,就像任何正常的语句一样。该块包含你的println,它显示循环后的k值,这是你的负值。
答案 5 :(得分:0)
您的代码可以重写为
int k;
for (k=0; k>-3; k=-2;)
{
// do nothing
}
System.out.println(k);
但可能你想得到这样的东西:
int k;
for (k=0; k>-3; k-=2) {
System.out.println(k);
}
;
之前没有{
编辑:好抓!