File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Do-while loop?

 
Abhi vijay
Ranch Hand
Posts: 509
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Source: K&B Book.

1. public class Test {
2. public static void main(String [] args) {
3. int I = 1;
4. do while ( I < 1 )
5. System.out.print("I is " + I);
6. while ( I > 1 ) ;
7. }
8. }

The answer is no output is produce.
But isnt there a compilation error???
 
Rob Spoor
Sheriff
Pie
Posts: 20372
44
Chrome Eclipse IDE Java Windows
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator

I've added better indentation (which was left out on purpose in the book) so you can see the real flow.

The trick is, this is a while loop inside a do-while loop, which is perfectly fine.

Now as to why there is no output.
The inner loop itself is executed at least one. However, it's guard yields false immediately, so its body (the print) is not executed. Next the outer loop's guard is evaluated, and it too is false, thereby ending this loop too.
 
Campbell Ritchie
Sheriff
Pie
Posts: 47232
52
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
That's what I thought because there is no semicolon after the first while() but I tried it and it compiled and ran very boringly.

That is peculiar since the do-while there doesn't appear to fit into the form in the JLS.

Anybody else got any ideas?
 
Campbell Ritchie
Sheriff
Pie
Posts: 47232
52
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes, Rob is right.
 
Abhi vijay
Ranch Hand
Posts: 509
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks,Rob.
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic