如何使Java中的循环增加1以外的增量
如果你有这样的for循环:
for(j = 0; j<=90; j++){}
它工作正常。 但是当你有这样的循环:
for(j = 0; j<=90; j+3){}
它不工作。 有人可以向我解释这个吗?
那是因为j+3
不会改变j
的值。 您需要用j = j + 3
或j += 3
来replace它,以便j
的值增加3:
for (j = 0; j <= 90; j += 3) { }
由于其他人没有实际处理Could someone please explain this to me?
我相信我会:
j++
是速记,它不是一个实际的操作(好吧,真的是,但承担我的解释)
j++
实际上等于操作j = j + 1;
除了它不是一个macros或内联replace的东西。 这里有很多关于i+++++i
的操作的讨论,这是什么意思(因为它可以被解释为i++ + ++i
或者(i++)++ + i
这使我们能够: i++
与++i
。 它们被称为post-increment
和post-increment
pre-increment
运算符。 你能猜出他们为什么这么叫吗? 重要的部分是他们如何在作业中使用。 例如,你可以这样做: j=i++;
或者j=++i;
我们现在将做一个实例:
// declare them all with the same value, for clarity and debug flow purposes ;) int i = 0; int j = 0; int k = 0; // yes we could have already set the value to 5 before, but I chose not to. i = 5; j = i++; k = ++i; print(i, j, k); //pretend this command prints them out nicely //to the console screen or something, it's an example
i,j和k的值是什么?
我会给你答案,让你解决;)
i = 7, j = 5, k = 7;
这是前后增量操作员的权力,以及使用错误的危险。 但是,这是编写相同的操作顺序的替代方法:
// declare them all with the same value, for clarity and debug flow purposes ;) int i = 0; int j = 0; int k = 0; // yes we could have already set the value to 5 before, but I chose not to. i = 5; j = i; i = i + 1; //post-increment i = i + 1; //pre-increment k = i; print(i, j, k); //pretend this command prints them out nicely //to the console screen or something, it's an example
好吧,现在我已经向你展示了++
运算符是如何工作的,让我们来看看为什么它不适用于j+3
…记得之前我怎么称它为“速记”? 就是这样,看第二个例子,因为这是编译器在使用这个命令之前所做的事情(它比这更复杂,但这不是第一个解释)。 所以你会看到“扩展速记”有i =
AND i + 1
这就是你的要求。
这回到math。 函数定义在f(x) = mx + b
或方程y = mx + b
所以我们称之为mx + b
…它当然不是函数或等式。 顶多是一个expression。 这是所有j+3
是一个expression式。 没有赋值的expression式对我们来说并不好,但是它占用了CPU时间(假设编译器没有优化它)。
我希望能为你澄清一些事情,并给你一些空间提出新的问题。 干杯!
在你的例子中, j+=3
增加3。
(这里没有其他的说法,如果是语法相关,我会build议首先使用谷歌search,但我是新来的,所以我可能是错的。)
for(j = 0; j<=90; j = j+3) { }
j+3
不会将新值赋给j,加j=j+3
会将新值赋给j,循环会向上移动3。
j++
就像是说j = j+1
,所以在这种情况下,你可以像上面那样给j赋新值。
更改
for(j = 0; j<=90; j+3)
至
for(j = 0; j<=90; j=j+3)
应该是这样的
for(int j = 0; j<=90; j += 3)
但要小心
for(int j = 0; j<=90; j =+ 3)
要么
for(int j = 0; j<=90; j = j + 3)
循环语句的“增量”部分必须改变索引variables的值才能起作用。 “++ j”的长forms是“j = j + 1”。 所以,正如其他答案所说,你的增量的正确forms是“j = j + 3”,这不像简单的递增一样简洁。 正如你现在所知,“j + 3”实际上并没有改变j; 这是一个评价没有效果的expression。
如果你有这样的for循环:
for(j = 0; j<=90; j++){}
在这个循环中,使用由java语言提供的简写,意思是后缀运算符(use-then-change),它相当于j = j + 1,所以被更改的值被初始化并用于下一个操作。
for(j = 0; j<=90; j+3){}
在这个循环中,您只需将值增加3,但不会将其初始化回jvariables,因此j的值将保持不变。