2016-12-24 4 views
-1

Ich stieß auf ein Debugging-Problem, als ich Programm-Grüße Binärbaum machte. In der Hauptmethode meines Programms benutze ich Konstruktor, um einen Knoten mit dem Namen root zu erstellen, danach verwende ich getKey() Methode, um den Schlüssel der "previous" zu bekommen, die auf "root" beziehen sollte.binärer Baum seltsames Debugging

Hier ist mein Code:

/** 
* 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; 
    } 

} 

Wenn alle Dinge gehen, wie erwartet, es sollte Ausgang "3", aber es gibt stattdessen nichts. Ich habe meinen Code überprüft und den Codefluss verfolgt und kann immer noch nicht herausfinden, wo das Problem liegt. Bitte hilf mir, danke!

+0

korrigierte Grammatik –

Antwort

0

Wenn Sie das Programm starten, wird auf die Benutzereingabe unter der Anweisung int times = sc.nextInt(); gewartet.

Sobald Sie die Eingabe eingegeben haben, druckt das Programm 3 wie erwartet.

+0

Oh, danke für Ihre Hilfe! –

0

Sie sollten nicht Scanner verwenden, wie Sie schwer, den Wert als 3 codiert haben und Sie verwenden mal nicht oder Sie sollten wie diese

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

     BinaryTreeExample l1=new BinaryTreeExample(times); 

verwenden Jedes Mal, wenn Sie für die Eingabe verlangen sollten Sie eine prompt.Although geben ist nicht zwingend erforderlich, aber es wird die Verwirrung vermeiden, wie wenn das Programm auf Eingabe wartet

+0

Sicher, nächstes Mal werde ich es merken, thx! –