-3

リンクされたリストの get メソッドを設計しようとしていました。引数として int の位置を取り、指定された位置 (位置はゼロから始まります) にあるリスト要素を返します。

私のロジックは正しいと思いますが、コンパイルされません。ここで私が間違ったことを誰かが指摘できますか?

abstract public class AbstractListNode {

    abstract public Object first ( );
    abstract public AbstractListNode rest ( );
    abstract public boolean isEmpty ( );
    abstract public int size( );
    abstract public Object get(int index);
    // Every other list-processing method goes here.
}

class NonemptyListNode extends AbstractListNode {

    private Object myFirst;
    private AbstractListNode myRest;

    // cons in Scheme.
    public NonemptyListNode (Object first, AbstractListNode rest) {
        myFirst = first;
        if (rest == null) {
        myRest = new EmptyListNode ( );
        } else {
        myRest = rest;
        }
    }

    public NonemptyListNode (Object first) {
        this (first, new EmptyListNode ( ));
    }

    // car in Scheme.
    public Object first ( ) {
        return myFirst;
    }

    // cdr in Scheme.
    public AbstractListNode rest ( ) {
        return myRest;
    }

    public boolean isEmpty ( ) {
    return false;
    }

    public int size ( ) {
        return 1+myRest.size();
    }

    public Object get(int index){
        if(index+1 > this.size())
            throw new IllegalArgumentException ("Out of Range");
        else if(index == 0){
            return myFirst;
        }
        else{
            index = index-1;
            AbstractListNode l = this.myRest;
            l.get(index);
        }          
    }
}

class EmptyListNode extends AbstractListNode {

    public EmptyListNode ( ) {

    }

    public Object first ( ) {
        throw new IllegalArgumentException ("There is no 'first' value stored in an EmptyListNode.");
    }

    public AbstractListNode rest ( ) {
        throw new IllegalArgumentException ("No elements follow an EmptyListNode.");
    }

    public boolean isEmpty ( ) {
        return true;
    }

    public int size( ) {
        return 0;
    }

    public Object get(int index){
        throw new IllegalArgumentException ("Out of Range");
    }
}
4

1 に答える 1