title: Break Label is missing even when the label is inside the enclosing loop
body: <p>Can someone tell me why the compiler says the label is missing in the below code:</p>
  
  <p><strong>CASE1:</strong></p>
  
  <p><strong>Error:</strong> Label is missing</p>
  
  <pre><code>void crazyLoop() {
      int c = 0;
      JACK: while (c &lt; 8) {
          JILL: System.out.println(c);
          if (c &gt; 3)
              break JILL;
          else
              c++;
      }
  }
  </code></pre>
  
  <p>Here <code>JILL</code> is reachable as I am have declared <code>JILL</code> inside <code>JACK</code> and not outside <code>JACK</code>.</p>
  
  <p><strong>CASE2:</strong></p>
  
  <p><strong>Error:</strong> c cannot be resolved.
  And if I do this :</p>
  
  <pre><code>void crazyLoop() {
      JILL:int c = 0;
      JACK: while (c &lt; 8) {
           System.out.println(c);
          if (c &gt; 3)
              break JILL;
          else
              c++;
      }
  }
  </code></pre>
  
  <p>the compiler says <code>c</code> cannot be resolved to a variable.</p>
  
  <p>Can someone please explain what is happening ?</p>