Qualcuno mi sa spiegare a cosa si riferisce questo errore?

Exception in thread "main" java.util.NoSuchElementException
at java.util.StringTokenizer.nextToken(Unknown Source)
at RubricaTestc.elenconum(RubricaTestc.java:49)
at RubricaTestc.main(RubricaTestc.java:24)

riguarda questa parte di codice che vi posto :
codice:



import java.util.*;
import java.io.*;
import java.util.StringTokenizer;
import java.util.Scanner;

public class RubricaTestc
{
    static Rubrica1 array[]= new Rubrica1 [100];
    static int pos=0;
    static boolean entra=false;
   static String buffer;
    static String nome;
    static String cognome;
    static String telefono;

    public static void main (String args[])
    {

      for(int a=0;a<array.length;a++)
      {
        array[a]=new Rubrica1();
      } 
        

elenconum();
        inizio();
        stampa();
       
        for(int r=0;r<array.length;r++) // visualizza il contenuto dell'array
          { 
            System.out.println(array[r].getCognome()+" "+array[r].getNome()+" "+array[r].getTelefono());
          }
    
     
    }
     public static void elenconum() //metodo lettura file
      { 
         try
       {
         
         FileReader file = new FileReader("elenco.txt");
         BufferedReader in = new BufferedReader(file);
         int i=0;
         
         while(in.ready())
         {
           buffer=in.readLine();
           StringTokenizer tokens = new StringTokenizer(buffer);
           array[i].setCognome(tokens.nextToken());
           array[i].setNome(tokens.nextToken());
           array[i].setTelefono(tokens.nextToken());
           i++;
           }
      
         }
       catch(IOException e)
         {e.printStackTrace();}// indica la riga dove si e generata l'eccezione
       System.out.println("caricamento numeri eseguito con successo\n");
                   
       }