totoString在显示通用树的节点时不会显示预期结果

问题描述 投票:0回答:1

我正在创建一个程序,该程序能够使用户为任务列表创建一个名称,该名称将作为我的树的根。问题是,当显示节点时,它将导致如下所示:

===============CREATING A NEW TASK===============
Enter the name of the Task: 
TaskOne
edu.slu.ds.RootTasks@76fb509a

edu.slu.ds.RootTasks@76fb509a

第二个错误应该显示为“ no children”,因为用户正在创建其根任务。

我已经创建了两种添加子节点并在添加完成后显示它们的方法。我也有toString,它可以返回与我的显示方法一起使用的数据:

这是创建任务的主程序的代码:

void CreateTask(){
    System.out.println("===============CREATING A NEW TASK===============");
    System.out.println("Enter the name of the Task: ");
    String entered = keyboard.nextLine();
    RootTasks task = new RootTasks(entered, null);
    TreeNode<RootTasks> rootTasksTree =new TreeNode<>(task);
    rootTasksTree.addChild(rootTasksTree);
    rootTasksTree.showChildren();

    System.out.println("Create a level one task Y/N?: ");
    switch (keyboard.nextLine().toUpperCase()){
        case "Y":
            CreateLevelOneTask();
            break;
        case "N":
            run();
            break;
        default:
            System.out.println("Invalid Choice");
    }
}

这是我的addChild和showChildren方法:

  public void addChild(TreeNode<T> testNode){
        if (firstChild == null) {
            setFirstChild(testNode);
        } else {
            TreeNode<T> pointer = firstChild;
            while (pointer.getSibling() != null){
                pointer = pointer.sibling;
            }
            pointer.setSibling(testNode);
        }
        testNode.setRoot(this);
    }



    public void showChildren(){
        System.out.println(this.toString() + "\n");
        if(firstChild == null){
            System.out.println("\tNo Branches");
        } else if (firstChild.sibling != null){
            TreeNode<T> pointer = firstChild;
            while (pointer.sibling != null) {
                pointer.showChildren();
                System.out.println();
                pointer = pointer.sibling;
            }
            pointer.showChildren();
        } else {
            System.out.println(firstChild.toString());
        }
    }

    @Override
    public String toString() {
        return getData() + "";
    }

}

RootTask类将首先用于创建任务,而我将第二个参数设置为null,因为这是我将设置其子节点的位置。

class RootTasks extends Tree{
private String title; //RootTasks title
private Tree<LevelOneTask> lvlOneTask;

public RootTasks(String title, Tree<LevelOneTask> lvlOneTask){
    this.title = title;
    this.lvlOneTask = lvlOneTask;

}

String getTitle(){
    return title;
}

void setTitle(){
    this.title = title;
}

public Tree<LevelOneTask> getLvlOneTask(){
    return lvlOneTask;
}

public void setLvlOneTask(Tree<LevelOneTask> lvlOneTask) {
    this.lvlOneTask = lvlOneTask;
}

public void displayTaskList(){
    try {
        System.out.println(getTitle());

    }catch (Exception e){
        System.out.println("No tasks of any found");
    }


}

下面有关LevelOneTasks的情况在RootTasks上的工作原理相同,除了更多内容包括标题,描述,其状态(标记为完成或未标记)以及LevelTwoTasks(仅由标题及其状态组成。)>

我希望输出是这样的:

===============CREATING A NEW TASK===============
Enter the name of the Task: 
TaskOne

Created Task:

TaskOne

    No Children Added

我正在创建一个程序,该程序能够使用户为任务列表创建一个名称,该名称将作为我的树的根。问题是,在显示节点时,它将导致类似...

java data-structures
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.