簡體   English   中英

在 Java 中創建從 LinkedList 類調用方法的通用 Stack 類的問題

[英]Problem with creating generic Stack class in Java that calls methods from LinkedList class

我正在嘗試使用基本堆棧方法(包括 push、pop 等)創建一個泛型類。我正在嘗試使用類型 E,但不斷收到錯誤消息,例如“E 無法轉換為 int”。 對於這些方法,我正在調用我在另一個名為 LinkedList 的文件中創建的其他方法,該文件具有 removeLastNode 等。我做錯了什么?


public class Stack<E>
{

      private LinkedList Stack = new LinkedList();

      private int size;
      
      private class Node
      {
      private int data;  
      private Node next; 
       
      public Node(int item)
      {
         data = item;
         next = null;
      }
      }
      
      public Stack()
      {
      size = 0;
      }

      public void push(E data)
      {
         Stack.addLastNode(data);
         size++;
      }
      
      public E pop()
      {
         if (size == 0)
            throw new EmptyStackException();
         else
            Stack.removeLastNode();
         size--;
      }
      
      public E top()
      {
        data = Stack.removeLastNode();
        Stack.addLastNode(data);
        
        if (size == 0)
           throw new EmptyStackException();
        else
           return data;
      }
      
      public int size()
      {
      return size;
      }
      
      public boolean isEmpty()
      {
      if (size == 0)
         return true;
      else
         return false;
      }
   }


Stack.java:38: error: incompatible types: E cannot be converted to int
         Stack.addLastNode(data);
                           ^
  where E is a type-variable:
    E extends Object declared in class Stack
Stack.java:53: error: incompatible types: void cannot be converted to int
        data = Stack.removeLastNode();
                                   ^
Stack.java:59: error: incompatible types: int cannot be converted to E
           return data;
                  ^
  where E is a type-variable:
    E extends Object declared in class Stack
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
3 errors

您正在嘗試將Node對象作為int返回,但事實並非如此。

相反,返回Node對象的data字段,例如pop() ,它應該返回int

Node node = Stack.removeLastNode();
return node.data;

----

一些錯誤,例如在top()方法中首先檢查大小,而在pop()您目前甚至沒有 return 語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM