Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
712 views
in Technique[技术] by (71.8m points)

for loop without braces in java

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;
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...