2016-12-24 2 views
-1

Я столкнулся с проблемой отладки, когда я делал программу, рассматривая двоичное дерево. В основном методе моей программы я использую конструктор для создания узла с именем root, после чего я использую метод getKey() для получения ключа «previous», который должен относиться к «root».бинарное дерево weird debugging

Вот мой код:

/** 
* 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, как и ожидалось.

+0

О, спасибо вам за помощь! –

0

Вы не должны использовать сканер, как вы жёстко значение как 3, и вы не используете раз или вы должны использовать как этот

 System.out.println("Enter the value"); 
     Scanner sc = new Scanner(System.in); 
     int times = sc.nextInt(); 

     BinaryTreeExample l1=new BinaryTreeExample(times); 

Всякий раз, когда вы запрашиваете на входе вы должны дать prompt.Although это не является обязательным требованием, но он избежит путаницы, например, когда программа ждет ввода

+0

Конечно, в следующий раз я это заметлю, thx! –