我正在创建一个程序,该程序能够使用户为任务列表创建一个名称,该名称将作为我的树的根。问题是,当显示节点时,它将导致如下所示:
===============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
我正在创建一个程序,该程序能够使用户为任务列表创建一个名称,该名称将作为我的树的根。问题是,在显示节点时,它将导致类似...