0

我正在尝试编译以下程序并不断收到抽象方法错误。我正在尝试编译的程序如下(虽然尚未完成)。我收到的错误如下:

Double.java:5: error: Double is not abstract and does not override abstract method getNext() in ListInterface
public class Double<T extends Comparable<T>> implements ListInterface<T>{
       ^
  where T is a type-variable:
    T extends Comparable<T> declared in class Double
1 error

import java.io.*;
import ch06.lists.*;
import support.DLLNode;

public class Double<T extends Comparable<T>> implements ListInterface<T>{

    protected DLLNode<T> front;
    protected DLLNode<T> rear;
    protected DLLNode<T> curPosition;
    protected int numElements;

    public Double(){
        front = null;
        rear = null;
        curPosition = null;
        numElements = 0;
    }

    protected DLLNode<T> find(T target){

    }

    public int size(){
        return numElements;
    }

    public boolean contains(T element) throws NullPointerException{
        if (DLLNode.getInfo()!=element){
            return false;
        }
        else{
            return true;
        }
    }

    public boolean remove(T target) throws StackUnderflowException{
        if (!contains(target)){
            return false;
        }
        else{
            return true;
            DLLNode.setLink()==null;
        }
    }

    public T get(T element){
        return find(element);
    }

    public String toString(){

    }   

    public void reset(){

    }

    @Override
    public T getNext(){
        return null;
    }

    public void resetBack(){

    }

    public T getPrevious(){

    }

    public void add(T element){

    }
}
4

3 回答 3

0

它说您没有覆盖 中的getNext()方法ListInterface,目前您有两种getNext()方法。我很惊讶它没有告诉你这件事,但我猜它正在查看第一个并且看到它与它所期望的不一样ListInterface.java。删除该public DLLNode<T> getNext()方法,错误应该会消失。

问题的真正解决方案是让自己拥有一个好的 IDE,比如 Eclipse 或 IntelliJ。他们将突出显示所有问题在您的代码中的位置,并为您提供如何解决这些问题的建议。通常,使用 IDE 最难的部分是正确设置它,所以我建议为您决定的任何 IDE 搜索教程。

于 2013-04-09T17:31:00.433 回答
0

知道了!

您在以下位置缺少 }:

public boolean remove(T target) throws StackUnderflowException{
    if (DLLNode.contains()==target){
        return true;
        DLLNode.setLink()==null;
}

虽然我真的不明白你在这里尝试做什么......

在:

   public boolean remove(T target) throws StackUnderflowException{
        if (!contains(target)){
            return false;
        }
        else{
            return true;
            DLLNode.setLink()==null;
        }
    }

您不能返回一个值并在之后执行另一个命令。切换返​​回顺序 &DLLNode.setLink()==null;

于 2013-04-09T17:37:38.737 回答
0

这里有很多错误。

一些:

1.

 protected DLLNode<T> find(T target){

需要返回一些东西。

2.

 public String toString(){

需要返回一些东西。

3.

public T getPrevious(){

需要返回一些东西。

4.

    protected DLLNode<T> find(T target) {

尽管

    public T get(T element) {
        return find(element);
    }

看到 get() 返回 T 并且 find() 返回DLLNode<T>


编译器只是对这一切感到困惑,并告诉你至少要修复一些东西:)

于 2013-04-09T17:52:53.630 回答