2017-05-11 17 views
0

テキストファイルの文字列を使用してユーザープロファイルを作成し、各プロファイルをバイナリツリーに挿入するプログラムを作成しようとしています。すべてが順番どおりになっているように見えますが、ファイルを読み込もうとするとNoSuchElementFound例外がスローされます。ここでファイルから文字列を読み込んでバイナリツリーに挿入する方法

私のファイルリーダークラスです:

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; 
} 

}

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; 
} 

}

そして、ここでは私のバイナリツリーのクラスです

これを修正する方法に関する提案はありますか? ありがとうございます

答えて

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

String fullName = splitProfile[0]; 
+1

私はこのプログラムにどこに入れますか? –

+0

プロファイル作成メソッドで –

関連する問題