1、二级 JAVA 机试 47 及答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.请在每条横线处填写一个语句,使程序的功能完整,且输出结果为 91 1。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 源程序文件代码清单如下: public class Outer public static void main (String args Outer i = new Outer(); i,taskInner(); public class Inner private int size; public v
2、oid doSomething(int size) _/访问局部变量 this. size+; /访问内部类的成员变量 _/访问外部类的成员变量 System.out.println(size+“ “+this.size+“ “+Outer.this.size); public void taskInner() _ k.doSomething(8); private static int size; (分数:30.00)_二、B2简单应用题/B(总题数:1,分数:40.00)2.本程序中,主窗口有一个按钮“显示对话框”,点击该按钮后显示一个对话框,对话框的标题是“对话框”,其上有一个文字标签“
3、这是一个练习,希望大家都能考个好成绩”,此时仍允许对原来窗口进行操作,当关闭新生成的对话框时退出程序。运行结果如图所示。 (分数:40.00)_三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是建立一个图形用户界面的窗口,包括一个文本显示区和一个按钮,点击按钮,可以在文本区已有的文本基础上追加显示 10 条“Welcome to the NCR Examination!“信息,并且文本区由滚动条控制文本的上下滚动。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: i
4、mport javax.swing.*; import java.awt.*; import java.awt.event.*; /* applet code=“ex13_3.class“ width=800 height=400 /applet */ public class ex13_3 extends JApplet JButton jb = new JButton(“Add Text“); JTextPane jtp = new JTextPane(); public void init() jb.addActionListener(new ActionListener() publi
5、c void actionPerformed(ActionEvent e) for(int i = 1; i 10; i+) Ujtp.geText(jtp.setText() +/U U“Welcome to the NCR Examination!/n“)/U; ); Container cp = getContentPane(); cp.add(new JScrollPane(jtp); Ucp.add(BorderLayout. SOUTH, jtp)/U; public static void main(String args) ex13_3 objl3_3=new ex13_3()
6、; String str = obj13_3.getClass().toString(); if(str.indexOf(“class“) != -1) str= str.substring(6); JFrame frm = new JFrame(str); frm.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent we) System.exit(O); ); Ufrm.getContentPane().add(ex13_3)/U; frm.setSize(300, 400); frm.set
7、Visible(true); ex13_3.html HTML HEAD TITLEex13_3/TITLE /HEAD BODY applet code=“ex13_3.class“ width=800 height=400 /applet /BODY /HTML(分数:30.00)_二级 JAVA 机试 47 答案解析(总分:100.00,做题时间:90 分钟)一、B1基本操作题/B(总题数:1,分数:30.00)1.请在每条横线处填写一个语句,使程序的功能完整,且输出结果为 91 1。 注意:请勿改动 main()主方法和其他已有的语句内容,仅在横线处填入适当的语句。 源程序文件代码清单
8、如下: public class Outer public static void main (String args Outer i = new Outer(); i,taskInner(); public class Inner private int size; public void doSomething(int size) _/访问局部变量 this. size+; /访问内部类的成员变量 _/访问外部类的成员变量 System.out.println(size+“ “+this.size+“ “+Outer.this.size); public void taskInner()
9、_ k.doSomething(8); private static int size; (分数:30.00)_正确答案:()解析:size+; Outerthissize+: Inner k=new Inner(); 解析 本题主要考查内部类的概念,super,this 关键字的用法。解答本题的关键是熟练掌握 super, this 关键字的用法。在本题中 size+;语句是访问局部变量 size,Outerthissize+;语句的功能是访问外部类的成员变量size,InnerK=new Inner();语句的功能是生成内部类 Inner 的对象 K。二、B2简单应用题/B(总题数:1,分
10、数:40.00)2.本程序中,主窗口有一个按钮“显示对话框”,点击该按钮后显示一个对话框,对话框的标题是“对话框”,其上有一个文字标签“这是一个练习,希望大家都能考个好成绩”,此时仍允许对原来窗口进行操作,当关闭新生成的对话框时退出程序。运行结果如图所示。 (分数:40.00)_正确答案:()解析:java.awt.* this 解析 本题考查知识点:AWT 库的使用、AWT 与 Swing 比较。 解题思路:类Example2_2 继承了 Frame 框架,同时也是一个事件监听器。这个监听器的事件响应结果为,显示“dlg”构件。构造方法中声明了一个名为“but”的按钮构件,还声明了一个名为
11、dlg 的对话框构件。addWindowListener 语句为 Frame 框架的关闭按钮添加事件响应,dlgaddwindowListener 语句为“dlg”的关闭按钮添加事件响应,这两个事件响应的结果都是退出程序。 在使用 AWT 库时,首先需要将AWT 库引进到程序中,包含 AWT 库的包为 java.awt*,即第一个空的内容。 本题中所使用到的构件都是AWT 的构件,AWT 中的 Dialog 类是一个对话框类,用于生成对话框对象,它是容器的一种,可以独立显示,但必须依赖于某一父窗口,其依赖性由其构造函数的参数列表来体现。本题的第二空就是为 Dialog 设定其父窗口,即当前的“
12、Example2_2”对象“f”。 Swing 和 AWT 的主要区别在于,Swing 是 AWT 为基础的新技术。AWT 受设计初衷的局限,不能满足图形化用户界面的开发,比如缺少剪贴板等特性,而且都是重量级的,需要本地支持。Swing 则不然,几乎都是轻量级的,不需要操作系统的支持,这是 Swing 和 AWT的最大区别。三、B3综合应用题/B(总题数:1,分数:30.00)3.下面是一个 Applet 程序,其功能是建立一个图形用户界面的窗口,包括一个文本显示区和一个按钮,点击按钮,可以在文本区已有的文本基础上追加显示 10 条“Welcome to the NCR Examination
13、!“信息,并且文本区由滚动条控制文本的上下滚动。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。 注意:不改动程序的结构,不得增行或删行。 源程序文件代码清单如下: import javax.swing.*; import java.awt.*; import java.awt.event.*; /* applet code=“ex13_3.class“ width=800 height=400 /applet */ public class ex13_3 extends JApplet JButton jb = new JButton(“Add Text“); JTextPan
14、e jtp = new JTextPane(); public void init() jb.addActionListener(new ActionListener() public void actionPerformed(ActionEvent e) for(int i = 1; i 10; i+) Ujtp.geText(jtp.setText() +/U U“Welcome to the NCR Examination!/n“)/U; ); Container cp = getContentPane(); cp.add(new JScrollPane(jtp); Ucp.add(Bo
15、rderLayout. SOUTH, jtp)/U; public static void main(String args) ex13_3 objl3_3=new ex13_3(); String str = obj13_3.getClass().toString(); if(str.indexOf(“class“) != -1) str= str.substring(6); JFrame frm = new JFrame(str); frm.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent
16、 we) System.exit(O); ); Ufrm.getContentPane().add(ex13_3)/U; frm.setSize(300, 400); frm.setVisible(true); ex13_3.html HTML HEAD TITLEex13_3/TITLE /HEAD BODY applet code=“ex13_3.class“ width=800 height=400 /applet /BODY /HTML(分数:30.00)_正确答案:()解析:jtp.setText(jtp.getText()+“Welcome to the NCRExaminatlo
17、n!/n“) cp.add(BorderLayout.SOUTH,jb) frm.getContentPane().add(Obj13_3) 解析 本题主要考查 Applet和 swing 结合进行图形用户界面设计的综合应用。解题关键是掌握 swing 的基本构件JTextPanel,JButton,JScrollPanel 的用法,掌握 BorderLayout 布局管理器的使用方法,以及熟练掌握最基本的对象概念。本题中,第 1 处,JTextPanel 的 2 个基本的方法,setText()和 getText()的功能,熟悉这 2 个功能,则很容易就能将错误改正;第 2 处,应该是通过 BorderLayout 布局管理器在窗口的最下方添加一个 JButton 对象,需要清楚程序中每个对象所对应的类;第 3 处,应该是将类 ex13_3 的对象。obj13_3 加入容器中,而不是把类作为参数传递给 add()方法。程序的输出结果如下: