1、二级 JAVA 机试-229 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下列程序中,要求计算 1+2+3+100 的值,并显示计算结果。请将程序补充完整。程序运行结果如下:5050源程序代码文件清单如下:public class ex20_1public static void main(String args)ex20_1 obj20_1=new ex20_1();obj20_1.method20_1();public void method20_1()int sum;_;for(int i=1;i=100;i+)_;_;(分数
2、:30.00)_二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序:用一个边框布局来安排一个工具栏和一个卡片布局。工具栏可浮动,包括两个按钮,一个向前一个向后控制卡片的显示;卡片布局包括 3 张卡片,分别标识为 card1、card2、card3。注意;请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。源程序代码文件清单如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.LineBorder;public cl
3、ass ex20_2private static CardLayout cl=new CardLayout();private static JPanel cp=new JPanel();public static void main(String args)JFrame jf=new JFrame();jf.setTitle(“ex20_2“);Container c=jf.getContentPane();JToolBar jtb=new JToolBar();JButton btnNext=new JButton(new Imagelcon(“next.gif“);JButton btn
4、Pre=new JButton(new ImageIcon(“back.gif“);jtb.add(btnPre);jtb.add(btnNext);cp.setLayout(c1);Dimension dim=new Dimension(150,80);cp.setPreferredSize(dim);cp.setBorder(new LineBorder(Color.BLACK);cp.add(new JLabel(“card1“,JLabelCENTER),“card1“);cp.add(new JLabel(“card2“,JLabelCENTER),“card2“);cp.add(n
5、ew JLabel(“card3“,JLabelCENTER),“card3“);c.add(jtb,BorderLayout.NORTH);c.add(cp,BorderLayout.CENTER);ActionListener al=new ActionResponse();_;_;if.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent we)System.exit(0););jf.pack();jf.setVisible(true);static class ActionResponse
6、implements ActionListenerpublic void actionPerformed(ActionEvent ae)if(ae.getActionCommand().equals(“next“)c1.next(cp);elsec1.previous(cp);(分数:40.00)_三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是通过一个按钮控制一个窗口的创建,显示与隐藏,并且以按钮文字作为提示,可以随着窗口的状态改变,即如果窗口出现,则按钮文字为 Hide myFrm,提示用户点击按钮,则隐藏窗口,反之亦然。请改正程序中的错误(有下
7、划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。源程序代码文件清单如下;import java.awt.*;import java.applet.*;/*applet code=“ex20_3.class“width=800 height=400/applet*/public class ex20_3 extends Appletprivate Frame frm;private Button showBtn;public void init()showBtn=new Button(“Show Frame“);add(ShowBtn);public boolean
8、 action(Event e,Object o)ife.target=showBtn)if(frm=null)frm,show();frm.dispose();frm=null;showBtn.setLabel(“Show myFrm“);elsefrm=new Frame(“myFrm“);frm.resize(200,150);frm.setBackground(Color.gray);frm.hide();showBtn.SetLabel(“Hide myFrm“);return true;ex02_3.htmlHTMLHEADTITLEex02_3/TITLE/HEADBODYapp
9、let code=“ex02_3.class“ width=800 height+400/applet/BODy/HTML(分数:30.00)_二级 JAVA 机试-229 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:30.00)1.下列程序中,要求计算 1+2+3+100 的值,并显示计算结果。请将程序补充完整。程序运行结果如下:5050源程序代码文件清单如下:public class ex20_1public static void main(String args)ex20_1 obj20_1=new ex20_1();obj20_1.meth
10、od20_1();public void method20_1()int sum;_;for(int i=1;i=100;i+)_;_;(分数:30.00)_正确答案:(sum=0sum+=i 或者 sum=sum+iSystem.out.println(sum)解析:解析 本题主要考查整型变量的初始化、累加和输出操作,以及 for 循环语句的用法。解题关键是熟悉整型变量的基本操作,熟悉并能利用 for 循环语句解决一些简单的数学问题。本题中,第 1 个空,需要对变量 sum 进行初始化,否则以后进行累加时会产生错误;第 2 个空,填入累加的表达式;第 3 个空,调用基本 I/O 方法将运算结
11、果显示出来。二、2简单应用题(总题数:1,分数:40.00)2.请完成下列 Java 程序:用一个边框布局来安排一个工具栏和一个卡片布局。工具栏可浮动,包括两个按钮,一个向前一个向后控制卡片的显示;卡片布局包括 3 张卡片,分别标识为 card1、card2、card3。注意;请勿改动 main()主方法和其他已有语句内容,仅在下划线处填入适当的语句。源程序代码文件清单如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.LineBorder;public clas
12、s ex20_2private static CardLayout cl=new CardLayout();private static JPanel cp=new JPanel();public static void main(String args)JFrame jf=new JFrame();jf.setTitle(“ex20_2“);Container c=jf.getContentPane();JToolBar jtb=new JToolBar();JButton btnNext=new JButton(new Imagelcon(“next.gif“);JButton btnPr
13、e=new JButton(new ImageIcon(“back.gif“);jtb.add(btnPre);jtb.add(btnNext);cp.setLayout(c1);Dimension dim=new Dimension(150,80);cp.setPreferredSize(dim);cp.setBorder(new LineBorder(Color.BLACK);cp.add(new JLabel(“card1“,JLabelCENTER),“card1“);cp.add(new JLabel(“card2“,JLabelCENTER),“card2“);cp.add(new
14、 JLabel(“card3“,JLabelCENTER),“card3“);c.add(jtb,BorderLayout.NORTH);c.add(cp,BorderLayout.CENTER);ActionListener al=new ActionResponse();_;_;if.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent we)System.exit(0););jf.pack();jf.setVisible(true);static class ActionResponse im
15、plements ActionListenerpublic void actionPerformed(ActionEvent ae)if(ae.getActionCommand().equals(“next“)c1.next(cp);elsec1.previous(cp);(分数:40.00)_正确答案:(btnNext.addActionListener(al)btnPre.addActionListener(al)解析:解析 本题主要考查工具栏和卡片布局的基本使用方法。解题关键是熟悉工具栏的设计和卡片布局的管理,熟悉事件处理机制,会制作图像按钮,会制作自己的事件监听器类。本题中,第 1 个
16、空和第 2个空都是需要填入注册监听器的语句,这里向前和向后两个按钮共用一个监听器,此监听器对象负责判断和处理相应的操作。三、3综合应用题(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是通过一个按钮控制一个窗口的创建,显示与隐藏,并且以按钮文字作为提示,可以随着窗口的状态改变,即如果窗口出现,则按钮文字为 Hide myFrm,提示用户点击按钮,则隐藏窗口,反之亦然。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。源程序代码文件清单如下;import java.awt.*;import java.applet.*;
17、/*applet code=“ex20_3.class“width=800 height=400/applet*/public class ex20_3 extends Appletprivate Frame frm;private Button showBtn;public void init()showBtn=new Button(“Show Frame“);add(ShowBtn);public boolean action(Event e,Object o)ife.target=showBtn)if(frm=null)frm,show();frm.dispose();frm=null;
18、showBtn.setLabel(“Show myFrm“);elsefrm=new Frame(“myFrm“);frm.resize(200,150);frm.setBackground(Color.gray);frm.hide();showBtn.SetLabel(“Hide myFrm“);return true;ex02_3.htmlHTMLHEADTITLEex02_3/TITLE/HEADBODYapplet code=“ex02_3.class“ width=800 height+400/applet/BODy/HTML(分数:30.00)_正确答案:(frm!=nullfrm
19、.hide()frm.show()解析:解析 本题主要考查 Applet 窗口及 Applet 程序的执行过程,和图形用户界面程序的设计。解题关键是熟悉 Applet 窗口程序设计及其执行过程。要求加入一个 Button 构件,同时需要熟悉图形用户界面的设计。通过 Applet 中的 Button 构件控制一个 Frame 窗口的显示与隐藏,要熟悉如何建立一个新窗口,如何设置窗口的标题,如何利用 Component 类的函数将窗口关闭。本题中,要正确解答,需要明确程序的控制流程;首先,判断用户是否按下按钮;其次,判断当前窗口对象是否存在,如果窗口不存在则定义一个窗口,反之将窗口隐藏,并同时修改按钮文字作为提示。要明白提示作用是;如果存在则提示关掉,不存在则提示显示。第 1 处,判断条件应该是 frm!=null,作用是判断当前窗口对象是否存在,存在的情况下才应该隐藏;第 2 处,这部分语句是用来隐藏窗口的,所以,应该是 frm.hide();同理第 3 处错误应该是 frm.show()。