开发者

Java Bucket Sort

I am trying to create my own style of Bucket Sort and I am getting an error with my code and I don't know how to fix it. Any help would be great. I have two classes, Node and BucketSort:

public class Node {

    protected int element;
    protected Node next;

    public Node()
    {
        element = 0;
        next = null;
    }
    public Node getNext(Node n)
    {
        return next;
    }
    public void setNext(Node n)
    {
        n = next;
    }
    public void setElement(int e)
    {
        e = element;
    }
    public int getElement()
    {
        return element;
    }
}

and

public class BucketSort extends Node{


    public static void bucketSort(int v, int[] b) //b = the array of integers and v = number of buckets wanted. 
    {
        Node[] bucket = new Node[v];  //Creating an array of type Node called bucket with v buckets. 
        for (int i=0; i<=b.length; i++){
            bucket[i].setElement(b[i]);   //Loop through array of integers b, and set each element to the corresponding index of array bucket.
        return;
        }

        for (int i=0; i<=bucket.length; i++){
             //Getting the element at the indexed Node of array "bucket" and assigning it to the array "b" at location element-1. For example if the element is 3, then 3 is assigned to index 2, since it is the 3rd spot.
            b[getElement()-1] = bucket[i].getElement(); 
            return; 
        }
        System.out.println(b);
    }

}

I am getting the 开发者_高级运维following Error at line 16 of BucketSort, the is code: b[getElement()-1]

The Error is:

Cannot make a static reference to the non-static method getElement() from the type Node.

Can you please tell me how to fix this.

Thanks

How can I Test This Program?


The problem is your misuse of the static keyword. I'm not sure if you're familiar with the semantics of static methods in Java (if you're not, you should read something comprehensive about it, maybe starting here), but the basic idea is that a method or field that is declared static belongs to the class and not any particular instance (object) of that class. In particular, static methods don't have any notion of a this pointer.

So the problem is that when your code calls getElement() by itself, Java is implicitly interpreting that as this.getElement(). However, bucketSort() is static while getElement() belongs to an instance of Node, so this doesn't make any sense -- what exactly is getElement() being called on?

Call it on a particular Node object, like bucket[i], and it'll compile (haven't really seen if it'll work though).


See the error. It tells the mistake you have done.

You can call the getElement() for a particular object.

And why bucketSort(int v, int[] b) need to be static? Any reasons?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜