I wonder why this two following codes give different results;
for(i = 1, j = 0; i < 10; i++) {
j += i;
System.out.println(i);
}
This one gives the numbers between 1 included and 10 excluded.
for(i = 1, j = 0; i < 10; i++)
j += i;
System.out.println(i);
However this one gives 10. I could not get the logic of this;
for()
do_something;
do_something_else;
The for
loop, the while
loop, and the if
statement (ignoring else
) all control a single Statement:
for (
[ForInit];
[Expression];
[ForUpdate])
Statement
for (
{VariableModifier} UnannType VariableDeclaratorId:
Expression)
Statement
while (
Expression)
Statement
if (
Expression)
Statement
That statement may be a Block, i.e. braces {}
with multiple statements.
So, this code is all the same:
for(i=1, j=0;i<10;i++)
j += i;
System.out.println(i);
for(i=1, j=0;i<10;i++)
j += i;
System.out.println(i);
for(i=1, j=0;i<10;i++)
j += i;
System.out.println(i);
for(i=1, j=0;i<10;i++) {
j += i;
}
System.out.println(i);
The first two are very bad, because they hide (misrepresent) the code structure.
Many people advocate always using blocks, to prevent confusing and coding errors.