【答案解析】(1)popBtn.addActionListener(this);
(2)i<PopCnt;i++或其等价语句
(3)ActionEvente
(4)input.getText()
(5)!MyStack.empty()或其等价语句
[要点解析]
这是一道要求读者掌握Java中Stack类工具应用的程序设计题。本题的解答思路如下。
堆栈简称为栈,遵循“后进先出(LIFO)”原则。Stack是Java用来实现栈的工具类,它的主要方法如表2-16所示。本试题的Java程序是使用Stack类实现堆栈中弹栈和压栈的操作。
{{B}}表2-16 Stack类的主要方法{{/B}}
|
{{B}}方 法{{/B}} |
{{B}}说 明{{/B}} |
| 构造函数 |
pubilc Stack() |
栈类唯一的构造函数,创建堆栈时可以直接调用它 |
| 压栈与弹栈操作 |
public Object push(Ohject item) |
将指定对象压入栈中 |
| public Object pop(Object item) |
将堆栈最上面的元素从栈中取出,并返回这个对象 |
| 检查堆栈是否为空 |
public boolean empty() |
若堆栈中没有对象元素,则此方法返回true,否则返回false |
对于本试题,Java程序中使用输入区域input来接收用户输入的数据,并用pushBtn按钮对应的操作将该数据压入堆栈,使用popBtn按钮对应的操作将数据从栈顶弹出,所以要随时监听这两个按钮是否有操作。程序中已给出了监听pushBut按钮是否有操作的语句“pushBut.addActionListener(this);”,同理可得,要随时监听popBut按钮是否有操作,则(1)空缺处所填写的弹栈按钮监听语句是“popBtn.addAction
Listener(this);”。
本Java程序为了显示堆栈中数据排列的情况和数据弹出的情况,还定义了两个一维数组DrawStaek[ ]和PoppedOut[
]分别记录堆栈中的数据和被弹出的数据。由于程序中己给出PopCnt是用来“记录模拟堆栈的数组中被弹H1的数据个数”等注释信息,而(2)空缺处所在的循环体是用来显示被弹出的数据。因此(2)空缺处所填写的内容是“i<PopCnt;i++”。
(3)空缺处所填写的内容用于设置监听操作,应填写“ActionEvent e”。
在使用压栈、弹栈操作时,压入堆栈和弹出堆栈的都是object对象或是。object子类的对象,而不是基本数据类型的数据。通常一个堆栈里可以保存不同类的对象,而本Java程序堆栈中保存的都是Integer类的对象。在压栈操作中,(4)空缺处要获取压入栈的数据,因此该空缺处应填入“input.getText()”。
在弹栈操作中,(5)空缺处用于判断栈是否为空,若不为空,才能进行弹栈操作,因此该空缺处所填写的判断条件是“!MyStack.empty()”。