我正在使用如下所示的以下方法創建此堆棧類。通用堆棧方法
import java.util.ArrayList;
import java.util.EmptyStackException;
public class SortableStack<E extends Comparable<E>> implements ISortableStack<E> {
private int N;
private Node first;
private class Node {
private E e;
private Node next;
}
public SortableStack() {
first = null;
N = 0;
}
private ArrayList<E> listOne = new ArrayList<E>();
public boolean isEmpty() {
return first == null;
}
public int size() {
return N;
}
public void push(E e) {
Node oldfirst = first;
first = new Node();
first.e = e;
first.next = oldfirst;
N++;
}
public E pop() {
if (isEmpty()) throw new RuntimeException("Stack underflow");
E e = first.e; // save e to return
first = first.next; // delete first node
N--;
return e; // return the saved e
}
public E peekMidElement() {
if(listOne.size() <= 0){
throw new EmptyStackException();
}
return listOne.get(listOne.size()/2);
}
public E peekHighestElement() {
if(listOne.size() <= 0){
throw new EmptyStackException();
}
return listOne.get(listOne.size() - 1);
}
public E peekLowestElement() {
if(listOne.size() <= 0){
throw new EmptyStackException();
}
return listOne.get(0);
}
}`
//接口ISortableStack是[這裏] [1] (該註釋描述所需的方法簽名)。
[1]:HTTP://stackoverflow.com/questions/7130901/java-stack-implementation
現在,當我嘗試這裏創建主體類:
import java.io.*;
public class ExhibitStack<E extends Comparable<E> > {
E ch;
public static void main(String[] args) throws IOException {
ISortableStack<E> s = new ISortableStack(5); // Cannot instatiate ISORTABLESTACK
ExhibitStack demo = new ExhibitStack();
// Cannot make reference to a non static type
while ((demo.ch = (E) System.in.read()) != '\n') {
if (!s.full()) {
s.push(demo.ch);
}
}
while (!s.empty()) {
System.out.print(s.pop());
}
System.out.println();
}
}
它在ISortableStack中拋出錯誤爲:無法對非靜態類型進行引用。 ,並且無法安裝ISORTABLESTACK
我想用界面創建菜單驅動的程序。我對Java GENERICS和集合很不滿意,並且在提交任務時已經很晚了。 任何幫助/方向將不勝感激。
我想你的意思是寫ISortableStack S =新SortableStack();你在這裏沒有泛型的問題,你不能實例化一個接口。你只能實例化一個ISortableStack的實現。 –
我知道這是一個Q + A網站,任何人都可以自由地提出問題,但是您不會通過讓其他人解決您的任務來學習如何編程。我希望你從這些答案中學習。 –
感謝您回覆Dru。但是,我比其他任何教科書都能從中學到更多。感謝@ZenMaster,@ Mark Peters,甚至你給予了這樣的真知灼見。至於做分配的事情,我很高興,至少我試圖弄清楚自己。 – Yonathan