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