如何使Java中的循环增加1以外的增量

如果你有这样的for循环:

for(j = 0; j<=90; j++){} 

它工作正常。 但是当你有这样的循环:

 for(j = 0; j<=90; j+3){} 

它不工作。 有人可以向我解释这个吗?

那是因为j+3不会改变j的值。 您需要用j = j + 3j += 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-incrementpost-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的值将保持不变。