回 帖 发 新 帖 刷新版面

主题:关于Stack的问题

我想用下面程序实现堆栈,想输出依次压入堆栈的数和依次弹出堆栈的数,可是编译出现了错误和警告,不知道是不是压栈和弹栈的方法写错了,请指教,谢谢!

import java.util.*;
import java.lang.Integer;
class MyStack
{
    public static void main(String[] args)
    {
        Stack ms=new Stack();
        for(int i=0;i<10;i++)
    System.out.println((Integer)ms.push(new Integer(i)).intValue());
        for(int j=0;j<20;j++)
        {
            if(!ms.empty())                    System.out.println((Integer)ms.pop().intValue());
        }
            
    }
}

以下是编译错误:
MyStack.java:9: 警告:[unchecked] 对作为普通类型 java.util.Stack 的成员的
push(E) 的调用未经检查
               System.out.println((Integer)ms.push(new Integer(
i)).intValue());
                                                                   ^
MyStack.java:9: 找不到符号
符号: 方法 intValue()
位置: 类 java.lang.Object
                        System.out.println((Integer)ms.push(new Integer(
i)).intValue());

   ^
MyStack.java:13: 找不到符号
符号: 方法 intValue()
位置: 类 java.lang.Object
                      System.out.println((Integer)ms.pop().intValue());

回复列表 (共2个回复)

沙发

能不能把 Stack 类也一起贴出来,

System.out.println((Integer)ms.push(new Integer(i)).intValue());
这句中的push()方法有返回值吗?

个人建议,如有错误,请指教!谢谢!

板凳

这个问题自己已经解决了,是强制转换时出了问题,括号打错了
至于Stack类,它是系统类库中的类,在java.util包中,所以不用自己写的,push方法的返回值是由形参确定的,而push的形参可以自己随便定义,基本型,引用型,甚至类都可以,我上面的形参就是一个对象,返回值也是对象.不过括号打错了,应该是下面的
System.out.println(((Integer)ms.push(new Integer(i))).intValue());

我来回复

您尚未登录,请登录后再回复。点此登录或注册