Win a copy of Java by Comparison (eBook) this week in the Java in General forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

Another question regarding the "for" loop  RSS feed

 
Greenhorn
Posts: 25
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Greetings,

I have another question regarding a "for" loop. Take a look at the following program:

class ForLoop{
public static void main(String[]args){

int i;
OuterLoop: for(i = 3; i > 0; i--){
InnerLoop: for(int j = 0; j < 4; j++){
System.out.println("i = " + i + " and j = " + j);
if(i == j)
break InnerLoop;
}
}
}
}


The output is:

i = 3 and j = 0
i = 3 and j = 1
i = 3 and j = 2
i = 3 and j = 3
i = 2 and j = 0
i = 2 and j = 1
i = 2 and j = 2
i = 1 and j = 0
i = 1 and j = 1

I'm trying to make sure that i'm understanding why i get the output i did. My understanding is when starting out, i = 3, it goes through the OuterLoop, the condition is checked (true), and it is then passed into the value of 'i':

i = 3

Next, in the InnerLoop, j starts out as '0' and goes through the loop, the condition is checked(true) and is passed into the value of 'j':

j = 0

Looking at the if statement, the lnnerLoop continues through the loop, increments according to the rule until 'j' becomes '3':

i = 3 and j = 1
i = 3 and j = 2
i = 3 and j = 3

(i == j) <-------- code breaks when i = 3 and j = 3

The InnerLoop stops ("break InnerLoop") and the OuterLoop starts over as i decrements (i--) and becomes 2, goes through the OuterLoop again, the condition is checked (true) and passed into 'i' again:

i = 2

Then the InnerLoop continues it's loop as j starts out again as 0, increments according to the rule until 'j' becomes '2':


i = 2 and j = 0
i = 2 and j = 1
i = 2 and j = 2

(i == j) <-------- code breaks when i = 2 and j = 2

.....and so on and so forth.


Am i correct in my assessment? Thanks in advance.
 
Sheriff
Posts: 11343
Java Mac Safari
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Originally posted by Derek Harper:
... Am i correct in my assessment? ...


Yes, good job!
 
Ranch Hand
Posts: 1970
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Now, having learnt how the "break label" statement works, you should forget all about it! It's not nice programming style at all.
[ April 04, 2008: Message edited by: Peter Chase ]
 
Sheriff
Posts: 57797
178
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

Originally posted by Peter Chase:
Now, having learnt how the "break label" statement works, you should forget all about it! It's not nice programming style at all.

[ April 04, 2008: Message edited by: Peter Chase ]

I'm trying my hardest to forget about break without a label, too

 
Derek Harper
Greenhorn
Posts: 25
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Marc.

Peter,

I'm curious about your statement. Why is it not good programming style? Please enlighten me.


Thanks in advance.
 
lowercase baba
Bartender
Posts: 12609
50
Chrome Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
some people consider the 'break label' to be nothing more than a camouflaged 'goto' statement. that is arguable, in my opinion. there is not a STRONG argument, but i believe one could be made.
 
Don't get me started about those stupid light bulbs.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!