-2

リンクリストを書き込もうとしていますが、いくつか問題があります。

これはintNodeクラスです:

public class IntNode
{
    private int _value;
    private IntNode _next;

    public IntNode(int v, IntNode n)
    {
        _value = v;
        _next = n;

    }
    public int getValue()
    {
        return _value;
    }

    public IntNode getNext()
    {
        return _next;
    }

    public void setValue(int v)
    {
        _value = v;
    }

    public void setNext(IntNode n)
    {
        _next = n;
    }
}

私のリンクリストクラス:

public class Set
{
    private IntNode _head;
    private IntNode _current;
    private IntNode _lastNode;

    /**
     * create a new empty Set object
     */
    public Set()
    {
        _head = null;
        _current = null;
        _lastNode = null;
    }

    /**
     * check if the object empty
     * @return true if Set object contain elements, false otherwise
     */
    public bool isEmpty()
    {
        return (_head == null);
    }

    /**
     * add number to Set object
     * @param x - the number to be add 
     */
    public void addToSet(int x)
    {
        if (isEmpty())
        {
            _head = new IntNode(x, _current);
            _head.setNext(_current);
        }
        else
        {
            _current = new IntNode(x, _lastNode);
            _current.setNext(_lastNode);
        }
    }

    /**
     * return a string representation of this Set 
     */
    public String toString()
    {
        String temp = "";

        for (IntNode currentNode = _head; currentNode != null; currentNode.getNext())
        {
            temp += currentNode.getValue() + ",";
        }

        return temp;
    }

addToSetメソッドとtoStringメソッドに問題があり、見つかりません。

4

2 に答える 2

1

変化する:

    /**
     * add number to Set object
     * @param x - the number to be add 
     */
    public void addToSet(int x)
    {
        if (isEmpty())
        {
            _head = new IntNode(x, _current);
            _head.setNext(_current);
        }
        else
        {
            _current = new IntNode(x, _lastNode);
            _current.setNext(_lastNode);
        }
    }

に:

    /**
     * add number to Set object
     * @param x - the number to be add 
     */
    public void addToSet(int x)
    {
        if (isEmpty())
        {
            _head = new IntNode(x, null);
        }
        else
        {
            _current = new IntNode(x, null);
            _lastNode.setNext = _current;
            _lastNode = current;
        }
    }
于 2012-06-17T14:02:14.587 に答える
0
for (IntNode currentNode = _head; currentNode != null; currentNode.getNext())
{
   temp += currentNode.getValue() + ",";
}

メソッド内の for ループの問題toString()(なぜオーバーライドしないのToString()ですか?) は、再割り当てしていないことですcurrentNode:使用していない新しいcurrentNode.getNext()オブジェクトを返します- 代わりに再割り当てします:currentNode

for (IntNode currentNode = _head; currentNode != null; currentNode = currentNode.getNext())
{
   temp += currentNode.getValue() + ",";
}

このコードは、C# よりも Java に似ています。プロパティの使用を調べ、命名規則を遵守し、言語固有のイディオムを使用してください。

于 2012-06-17T13:56:42.470 に答える