import java.util.Enumeration;
import java.util.Vector;
public class testEnumeration{
public  static void main(String[] args){
String a=new String("abc");
Integer b=new Integer(1);
Vector vt=new Vector();
vt.add(a);
vt.add(b);
Enumeration e=vt.elements();
while(e.hasMoreElements())
{
if(e.nextElement() instanceof String){
System.out.print((String)e.nextElement());
}
else if(e.nextElement()instanceof Integer){
System.out.println(((Integer)e.nextElement()).intValue());
}

}

}

}

解决方案 »

  1.   

    运行异常:ClassCastException 
      

  2.   

    import java.util.Enumeration;
    import java.util.Vector;public class TestEnumeration {
    public static void main(String[] args) {
    String a = new String("abc");
    Integer b = new Integer(1);
    Vector vt = new Vector();
    vt.add(a);
    vt.add(b);
    Enumeration e = vt.elements();
    while (e.hasMoreElements()) {
    Object oo = e.nextElement();
    if (oo instanceof String) {
    System.out.println((String) oo);
    } else if (oo instanceof Integer) {
    System.out.println(((Integer) oo).intValue());
    } } }你的先把 e.nextElement 取出来不然会有问题
      

  3.   

    谢谢interpb,可否解释下为什么呢?虽然问题解决了:)
      

  4.   

    e.nextElement每调用一次,当前元素就会后移一次;比如这一段:
    if(e.nextElement() instanceof String){
    System.out.print((String)e.nextElement());
    第一次在if中e.nextElement是String类型;可是你打印地时候在调用e.nextElement就变成了Integer类型了,所以要抛出那个异常
      

  5.   


    import java.util.Enumeration;
    import java.util.Vector;
    public class testEnumeration{
            public  static void main(String[] args){
                            String a=new String("abc");
                            Integer b=new Integer(1);
                            Vector vt=new Vector();
                            vt.add(a);
                            vt.add(b);
                            Enumeration e=vt.elements();
                            while(e.hasMoreElements())
                            {
                                Object obj=e.nextElement();
                                    if(obj instanceof String){
                                            System.out.println(obj.toString());
                                    }
                                    else if(obj instanceof Integer){
                                            System.out.println(((Integer)obj).intValue());
                                    }                        }                } }
      

  6.   

    搂主,提2点建议:
    1.object-〉String ,不用强制转换 只需用toString()
    2.在每次循环中,必须把e.nextElement()设成定值
      否则,你每次调用e.nextElement()
      都会指向下一个对象