当我让程序关注二叉树时,我遇到了调试问题。在我的程序的主要方法中,我使用构造函数来创建一个名为root
的节点,之后我使用getKey()
方法来获取应该引用的“previous
”的键“根”。
这是我的代码:
/**
* BinaryTreeExample from Internet
* @author xinruchen
*
*/
import java.util.*;
public class BinaryTreeExample
{
private static Node root;
public BinaryTreeExample(int data)
{
root = new Node(data);
}
public void add(Node parent,Node child, String orientation)
{
if(orientation=="left")
{
parent.setLeft(child);
}
else if (orientation=="right")
{
parent.setRight(child);
}
}
public static void main(String ar[])
{
Scanner sc = new Scanner(System.in);
int times = sc.nextInt();
BinaryTreeExample l1=new BinaryTreeExample(3);
Node previous = root;
String direction = "";
System.out.println(previous.getKey());
}
}
class Node {
private int key;
private Node left;
private Node right;
Node (int key) {
this.key = key;
right = null;
left = null;
} // constructor
public void setKey(int key) {
this.key = key;
}
public int getKey() {
return key;
}
public void setLeft(Node l) {
if (left == null) {
this.left = l;
}
else {
left.left = l;
}
}
public Node getLeft() {
return left;
}
public void setRight(Node r ) {
if (right == null) {
this.right = r;
}
else {
right.right = r;
}
}
public Node getRight() {
return right;
}
}
如果所有事情都按预期进行,则应输出“3”,但不会输出任何内容。我检查了我的代码并按照我的代码流程仍然无法找到问题所在。请帮帮我,谢谢!
答案 0 :(得分:0)
启动程序时,它将在指令int times = sc.nextInt();
处等待用户输入。
提供输入后,程序会按预期打印3
。
答案 1 :(得分:0)
您不应该使用扫描仪,因为您已将该值硬编码为3并且您没有使用时间或者您应该像这样使用
System.out.println("Enter the value");
Scanner sc = new Scanner(System.in);
int times = sc.nextInt();
BinaryTreeExample l1=new BinaryTreeExample(times);
无论何时请求输入,都应该给出提示。虽然这不是强制要求,但它会避免像程序等待输入时的混乱