title: Why is hasNext() False, but hasNextLine() is True?
body: <h2>Question</h2>
  
  <p>How is it that for a scanner object the <code>hasNextLine()</code> method returns true  while the <code>hasNext()</code> method returns false?</p>
  
  <p>Note: Based on the input file, the <code>hasNext()</code> method is returning the result as expected; the <code>hasNextLine()</code> does not seem to be returning the correct result.</p>
  
  <h2>Code</h2>
  
  <p>Here's the code I'm running that's creating the results below:</p>
  
  <pre><code>public void ScannerTest(Reader fileReaderObject){
      Scanner scannerObj = new Scanner(fileReaderObject);
  
      for(int i = 1; scannerObj.hasNext(); i++){
          System.out.println(i + ": " + scannerObj.next());
          System.out.println("Has next line: " + scannerObj.hasNextLine());
          System.out.println("Has next: " + scannerObj.hasNext());
      }
      System.out.println();
  
      scannerObj.close();
  }
  </code></pre>
  
  <h2>Input File</h2>
  
  <p>The following is the actual content of the file that I'm passing to this scanner:</p>
  
  <pre><code>a   3   9
  b   3   6
  c   3   3
  d   2   8
  e   2   5
  f   2   2
  g   1   7
  h   1   4
  i   1   1
  </code></pre>
  
  <h2>Result</h2>
  
  <p>The following is the end of what's printed in the console when I run my code, and includes the portion I can't make sense of:</p>
  
  <pre><code>25: i
  Has next line: true
  Has next: true
  26: 1
  Has next line: true
  Has next: true
  27: 1
  Has next line: true
  Has next: false
  </code></pre>