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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (16)

如果你有这样的for循环:

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

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

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

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

提问于
用户回答回答于

由于没有人实际处理,Could someone please explain this to me?我相信我会:

j++ 是速记,这不是一个实际的操作(好吧,它确实是,但承担我的解释)

j++j = j + 1;除了它不是一个宏或者内联替换的东西外,其实和操作是一样的。在这里有很多讨论关于这些操作的意义i+++++i和意义(因为它可以被解释为i++ + ++iOR(i++)++ + i

这将我们带到:i++++i。他们被称为post-incrementpre-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这就是你的要求。

这可以回到数学。一个函数被定义在什么地方f(x) = mx + b或方程式中y = mx + b,我们称之为什么mx + b......它当然不是函数或方程式。最多这是一个表达。这就是j+3一个表达。没有赋值的表达式对我们没有好处,但它占用CPU时间(假设编译器没有优化它)。

用户回答回答于

那是因为j+3不改变价值j。你需要用j = j + 3或者j += 3用值j3 来替换它。

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

扫码关注云+社区