title: For-loop type - can't recognise it
body: <p>In Robert Sedgewick's book i found the following code:</p>
  <pre><code>public class  QuickF{
   public static void main(String[] args){
  
      int N = 20;
      int id[] = new int[N];
      for (int i=0; i&lt;N; i++){
          id[i] = i;
      }
      for( In.init(); !In.empty(); ){
          int p = In.getInt(), q = In.getInt();
          int t = id[p];
          if (t==id[q]) continue;
          for (int i =0; i&lt;N; i++){
              if (id[i] == t) id[i] = id[q];
          }
          Out.println(&quot; &quot; +p+&quot;&quot;+q);
      }
    }
  }
  </code></pre>
  <p>My question is about this line: <code>for( In.init(); !In.empty(); )</code>. What type of forr loop is this? Is this syntacticaly legal? If yes, what is the documentation of this for loop type?</p>