2014-09-08 1 views
0

Так что я довольно застрял. У меня есть код, который используется внутри моего основного метода, который должен переопределять данные методы и распечатывать инструкцию. Я получил заявление в offer(E s) для работы, но, похоже, не может получить инструкции в peek() и size() для печати. Они функционируют нормально, но утверждения «Peeking at list» и «Размер списка отчетов» просто не будут печататься в их методах. Если некоторые люди могут пролить некоторый свет, мы будем очень благодарны! Основной находится в отдельном файлеПечатные заявления внутри переопределенных методов не отображаются

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); 
     } 
    } 
} 

ответ

0

Скорее всего ваши peek и size методы не называются. Вы всегда можете проверить это с помощью отладчика. Вы, кажется, ошибочно переопределяете методы. Попробуйте добавить @override поверх ваших методов.

LinkedList peek метод не принимает каких-либо параметров, но ваш метод делает:

public E peek(E slist) 

так это означает, что вы не переопределение метода.

+0

Ahhhhh, что имеет смысл! –

0

peek() не то же самое, что и peek(E), которое вы внедрили.

Вы определили peek в вашей StduentList в

public E peek(E slist) { 

Но используют

String si = slist.peek(); 

Назвать ...

На самом деле, я с трудом пытаясь чтобы выяснить, почему вам необходимо переопределить любые методы, в первую очередь ...

+0

Это отдельно от назначения, поэтому я попытался стереть мои параметры в какой-то момент, но это дало мне ошибку в отношении метода, который должен был возвращать тип E. Что это значит? –

+0

'peek' должен возвращать' super.peek', а не параметр, который вы передаете ему ... – MadProgrammer

+0

Так как super.peek имеет тип E из-за LinkedList, его можно просто вернуть так? –

0

Когда вы вызываете заглядывать() и размер() в основном, вы назвали этот метод из

 String java.util.LinkedList.peek() 
     int java.util.LinkedList.size() 

это не ваш метод, который вы пишете в своем StudentList класса.

Смежные вопросы