在覆盖的方法中打印语句不出现

时间:2014-09-08 03:13:16

标签: java inheritance

所以我很困惑。我有一些代码正在我的main方法中使用,需要覆盖给定的方法并打印出一个语句。我在offer(E s)中使用了该语句,但似乎无法将peek()size()中的语句打印出来。它们运行正常,但“在列表中偷看”和“报告列表大小”这些语句不会在其方法中打印出来。如果有些人能够发光,我们将不胜感激!主要位于单独的文件

import java.io.*;
import java.util.*;
import java.awt.*; //for Point

public class StudentList<E>extends LinkedList<E> {
    public boolean offer(E s) {
        super.offer(s); 
        System.out.println("Offering "+ s);
        return true;
    }

    public boolean contains(Object o) {
        super.contains(o);
        return false;
    }

    public E peek(E slist){
        super.peek();
        System.out.println("Peeking at list") ;
        return slist;
    }

    public int size(Integer ilist){
        System.out.println("Reporting list size");
        size(ilist);
        //System.out.println("Reporting list size");
        return ilist;
    }
}

这是主要方法:

public class OfferDriver
{
    public static void main ( String[] args) 
    {
        StudentList<Integer> ilist = new StudentList<Integer>( );
        StudentList<String> slist = new StudentList<String>( );

        String s;
        Integer i;
        Scanner in = new Scanner(System.in);
        System.out.print("Please enter a word to offer (\"stop\" to stop):\t");
        while (in.hasNext()) {
            s = in.next();
            if (s.equalsIgnoreCase("stop")) { break; }
                slist.offer(s);
                System.out.println("Size is: " + slist.size());
                System.out.print("Please enter a word to offer (\"stop\" to stop):\t");
            }
            System.out.println("\n" + slist);
            String si = slist.peek();
            System.out.println("Testing peek(): " + si); 

            System.out.print("Please enter an integer to offer (<any word> to stop):\t");
            while (in.hasNextInt()) {
                i = in.nextInt();
                ilist.offer(i);
                System.out.println("Size is: " + ilist.size());
                System.out.print("Please enter an integer to offer (<any word> to stop):\t");
            }
            System.out.println("\n" + ilist);
            int pi = ilist.peek();
            System.out.println("Testing peek(): " + pi);
        }
    }
}

3 个答案:

答案 0 :(得分:0)

很可能未调用peeksize方法。您始终可以在调试器的帮助下进行检查。你似乎错误地覆盖了这些方法。因此,请尝试在方法之上添加@override

LinkedList peek方法不接受任何参数,但您的方法可以:

public E peek(E slist)

所以这意味着你没有改写方法。

答案 1 :(得分:0)

peek()与您已实施的peek(E)不同。

您已在peek中将StduentList定义为

public E peek(E slist) {

但正在使用

String si = slist.peek();

要打电话......

事实上,我很难弄清楚为什么你需要首先覆盖任何方法......

答案 2 :(得分:0)

当你在main中调用peek()和size()时,你从

调用了这个方法
     String java.util.LinkedList.peek()
      int java.util.LinkedList.size()

这不是您在StudentList类中编写的方法。