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;
}
}
そして、ここでは私のバイナリツリーのクラスです
これを修正する方法に関する提案はありますか? ありがとうございます
私はこのプログラムにどこに入れますか? –
プロファイル作成メソッドで –