Как читать строки из файла и вставлять в двоичное дерево

Я пытаюсь сделать программу, которая создает профили пользователей, используя строки из текстового файла, и вставляет каждый профиль в двоичное дерево. Все выглядит так, как будто все должно быть в порядке, но при попытке прочитать файл выдает исключение NoSuchElementFound.

Вот мой класс для чтения файлов:

    public class FileReader {

public static BST readProfiles(String filename, BST tree){
    File inputFile = new File(filename);
    FileReader.readFileDate(inputFile, tree);
    return tree;
}

public static void readFileDate(File inputFile, BST tree){
    Scanner in = null;
    try 
    {
        in = new Scanner(inputFile);
    } 
    catch (FileNotFoundException e) 
    {
        System.out.println("Cannot open file");
        System.exit(0);
    }

    FileReader.readLine(in, tree);

}
public static void readLine(Scanner in, BST tree) 
{
    while (in.hasNextLine()) 
    {
        String line = in.nextLine();
        if(line.isEmpty()){
            continue;
        }
    Scanner lineScanner = new Scanner(line);
    lineScanner.useDelimiter(",|;");
    FileReader.createProfile(lineScanner, tree);
    }
}
public static Profile createProfile(Scanner lineScanner, BST tree) 
{

    String name = lineScanner.nextLine();
    int dd = lineScanner.nextInt();
    int mm = lineScanner.nextInt();
    int yyyy = lineScanner.nextInt();
    String town = lineScanner.nextLine();
    String country = lineScanner.nextLine();
    String nationality = lineScanner.nextLine();
    String interests = lineScanner.nextLine();

    Profile p = new Profile(name, dd, mm, yyyy, town, country,
            nationality, interests);
    tree.insertProfile(p);
    return p;
}

}

И вот мои классы бинарного дерева:

    public class BST {
private static BSTNode root;

BST(){

}

public void insertProfile(Profile p){
    BSTNode currentNode = new BSTNode(p);
    if(root == null){
        root = currentNode;
    }
    else{
        recursiveMethod(currentNode);
    }
}

private static void recursiveMethod(BSTNode currentNode){
    Profile p1 = root.getProfile();
    Profile p2 = currentNode.getProfile();
    if(p1.getName().compareTo(p2.getName()) < 0 && currentNode.getLeft() != null){
        recursiveMethod(currentNode.getLeft());
    }
    if(p1.getName().compareTo(p2.getName()) > 0 && currentNode.getLeft() !=null){
        recursiveMethod(currentNode.getRight());
    }
}

}

    public class BSTNode {
private BSTNode left;
private BSTNode right;
private Profile data; 

public BSTNode(Profile data){
    this.data = data;
    setLeft(left);
    setRight(right);
}

public Profile getProfile(){
    return data;
}
public void setLeft(BSTNode l){
    this.left = l;
}
public BSTNode getLeft(){
    return left;
}
public void setRight(BSTNode r){
    this.right = r;
}
public BSTNode getRight(){
    return right;
}

}

Любые предложения о том, как исправить это? Спасибо

1 ответ

String splitProfile[] = lineScanner.split(",");

String fullName = splitProfile[0];
Другие вопросы по тегам