2010-06-13 116 views
1

這是我的課,我想排序我的堆棧,但它會拋出異常,請幫助我謝謝!爲什麼會拋出java.lang.classCastException

public class jj { 
public static void main(String[] args){ 
Stack<Integer> s = new ImplimentingAStackUsingAnArrayOfAGivenSizeN(5); 
s.push(1); 
s.push(3); 
s.push(5); 
s.push(2); 
s.push(4); 
Collections.sort((List<Integer>) (s)); 
System.out.println(s); 
while (!s.isEmpty()) { 
    System.out.println(s.pop()); 


} 
} 
} 

堆棧跟蹤:

run: 
Exception in thread "main" java.lang.ClassCastException: datastructurechapter5.ImplimentingAStackUsingAnArrayOfAGivenSizeN cannot be cast to java.util.List 
     at datastructurechapter5.jj.main(jj.java:24)  `Collections.sort((List<Integer>) (s));` 
Java Result: 1 
BUILD SUCCESSFUL (total time: 2 seconds) 
+0

是'棧'你自己的界面或類?如果你這樣做會發生什麼:'java.util.Stack s = new ImplimentingAStackUsingAnArrayOfagivenSizeN(5);'instead? – 2010-06-13 08:35:41

+0

OT:這是「實施」(用'e'),而不是「impliment」(用'i')。但這並不是你遇到問題的原因(我假設你在代碼中使用了相同的拼寫)。 – 2010-06-13 08:58:48

回答

5

我會假設你正在使用(和擴展)錯誤Stack。請確保您有

import java.util.Stack; 

如果Stack是一些類你的,你必須將它定義到教學貫徹List

public class Stack implements List {..} 

但是,這將是一個很大的工作,所以使用java.util.Stack

注:由於加斯帕評論,你最好使用java.util.Deque(也許ArrayDeque

+2

請注意,'java.util.Stack'是一個遺留集合類,它的文檔建議使用'java.util.Deque'代替。 – Jesper 2010-06-13 09:42:14

相關問題