0

Java で独自の二分探索木を作成しようとしています。私はすべてのメソッドを作成しました。現在、メソッドをテストするプログラムを作成しようとしています。

ただし、「挿入」メソッドを実装しようとすると、コンパイルされず、理由がわかりません。

public class lab05driver {
public static void main(String[] args) {
    BST q = new BST();

    int a = 5;
    String b = "jed";
    double c = 1.8;
    char d = 'r';
    boolean e = false;
    int f = 35;
    String g = "yay";
    double h = 2.1;
    char i = 'i';
    boolean j = true;

    Integer k = 5;
    q.insert(k);    
}}

私のBSTクラスは次のようになります。

public class BST implements myBST {

    private myTreeNode root;


    public BST() {

    }


    public void insert(Comparable x) {
        if(root == null) {
            root = new myTreeNode();
            root.data = x;
        } else if ( !lookup(x) ) {
            root.insert(x);
        }

    }


    ...more code...

}

そして、myBST は次のようになります。

public interface myBST {
    public void insert(Comparable x);
    public void delete(Comparable x);
    public boolean lookup(Comparable x);
    public void printPreOrder();
    public void printInOrder();
    public void printPostOrder();
}

最後に、myTreeNode は次のようになります。

public class myTreeNode {

    public myTreeNode() {

    }

    public Comparable data ;

    public myTreeNode leftchild;

    public myTreeNode rightchild;

    public myTreeNode parent;

    public void insert(Comparable d) {
        //if less than
        //does left exist? if it doesnt, make it, give it d
        //if it exists call insertrecursive on rightchild
        if(d.compareTo(data) <= 0) {
            if(leftchild != null) {
                leftchild.insert(d);
            } else {
                leftchild = new myTreeNode();
                leftchild.data = d;
                leftchild.parent = this;
            }
        } else {
            if(rightchild != null) {
                rightchild.insert(d);
            } else {
                rightchild = new myTreeNode();
                rightchild.data = d;
                rightchild.parent = this;
            }
        }
    }

...more code...
}

lab05driver の「q.insert(k)」でエラーがスローされます。どんな助け/提案も大歓迎です...

~~~~~ 編集: 申し訳ありませんが、間違ってコピーしました... main メソッドがあり、整数 k は整数です... コマンドラインを取得するエラーは: 警告: [チェックされていない] 比較へのチェックされていない呼び出し(T ) raw タイプ java.lang.Comparable のメンバーとして

4

2 に答える 2

0

q.insert(k);は声明です。ステートメントはメソッド内にある必要がありますが、現在はメソッド内にありません。

したがって、次のようにします。

public class lab05driver
{
  public static void main( String[] args )
  {
    BST q = new BST();
    int a = 5;
    String b = "jed";
    double c = 1.8;
    char d = 'r';
    boolean e = false;
    int f = 35;
    String g = "yay";
    double h = 2.1;
    char i = 'i';
    boolean j = true;

    Integer k = 1; // changed because "Integer k = "test";" doesn't compile
    q.insert(k);
  }
}

メソッドに使用した署名に注意してください。これは、Java がエントリ メソッド (プログラムが開始される場所) として認識するシグネチャです。

于 2013-02-17T16:00:18.743 に答える