1、二级 JAVA 机试-16 及答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:1,分数:33.00)1.System.out.println(_);(分数:33.00)_二、2简单应用题(总题数:1,分数:33.00)2.请完成下列 Java 程序:创建一个具有 2 行 3 列的 GridLayout 管理器,包括 Choice,Label,Button 构件,布局为第 1 行包括一个 Choice 构件(包括 2 个选项 item1 和 item2),一个 Label 构件(当选择 Choice 构件中的选项时,Label 构件显示相应的名称,即,如果点击 it
2、em1 则 Label 中显示 item1),和一个 exit按钮(点击则退出应用程序),第 2 行包括 3 个 Button 构件。程序运行结果如下:(分数:33.00)_三、3综合应用题(总题数:1,分数:34.00)3.下面是一个 Applet 程序,其功能是在绘图区域中通过鼠标的移动来绘制直线,并且有清除绘图区域按钮,用来清除已经绘制的图像。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:(分数:34.00)_二级 JAVA 机试-16 答案解析(总分:100.00,做题时间:90 分钟)一、1基本操作题(总题数:
3、1,分数:33.00)1.System.out.println(_);(分数:33.00)_正确答案:(method(n1,n2)(double)x/yx*y)解析:解析本题主要考查 Java 语言的数据类型和结构以及不同数据类型之间的转换,和对象调用方法以及基本的运算操作。解题关键是熟悉 Java 语言的基本数据类型和类型之间的转换,用类的对象来调用方法,以及熟悉 Java 语言的基本运算。在本题中,第一空通过类 ex1_1 的对象 obj1_1 调用类 ex1_1 的方法 method(),将变量 n1 和 n2 作为参数传递给方法。第二空由于 x, y 都是 int,则 x/y 的结果为
4、 0.666,这会转换为 int,其值为 0。所以要对数据进行类型转换,将 x 转换为 double 型则 y 也转换为 double 型,因此结果为 double,值为 0.666.。第三空无需做类型转换,直接输出 x*y 的值 6 即可。二、2简单应用题(总题数:1,分数:33.00)2.请完成下列 Java 程序:创建一个具有 2 行 3 列的 GridLayout 管理器,包括 Choice,Label,Button 构件,布局为第 1 行包括一个 Choice 构件(包括 2 个选项 item1 和 item2),一个 Label 构件(当选择 Choice 构件中的选项时,Labe
5、l 构件显示相应的名称,即,如果点击 item1 则 Label 中显示 item1),和一个 exit按钮(点击则退出应用程序),第 2 行包括 3 个 Button 构件。程序运行结果如下:(分数:33.00)_正确答案:(new GridLayout(2,3)addItemListener(this)解析:解析本题主要考查 Java 常用构件 Choice 和高级事件 ItemEvent 以及 GridLayout 布局管理器的用法。解题关键是,熟悉 GridLayout 布局管理器和 ItemEvent 的用法。在本题中,ItemEvent 在教材中并没有给出确切的用法,但是可以根据
6、ActionEvent 的 addActionEvent()方法和重载 actionPerformed()方法来完成对动作事件监听的用法来类推出 ItemEvent 事件的监听方法,这里要求有根据已有知识进行举一反三的能力。三、3综合应用题(总题数:1,分数:34.00)3.下面是一个 Applet 程序,其功能是在绘图区域中通过鼠标的移动来绘制直线,并且有清除绘图区域按钮,用来清除已经绘制的图像。请改正程序中的错误(有下划线的语句),使程序能输出正确的结果。注意:不改动程序的结构,不得增行或删行。程序运行结果如下:(分数:34.00)_正确答案:(gdrawLine(downX,downY,
7、upX,upY)bDraw = trueevent.target = btn)解析:解析本题主要考查 Applet 的图形绘制,鼠标事件处理和用户界面的相关知识点以及会使用 boolean 类型的变量控制程序的流程。解题关键是,熟悉 Applet 的图形绘制,会用 Graphics 类的基本绘图方法,例如drawLine()方法;熟悉鼠标事件处理,并能与图形绘制和用户界面设计相结合做简单的综合应用;掌握一定的程序流程的控制思想。本题中,主要的思想是首先判断用户将鼠标按下与放开的坐标位置,然后使用drawLine()方法绘制由鼠标按下点到放开点的直线。第 1 处,将 drawLine()方法的几个参数颠倒,要明白此方法的几个参数的确切含义才能正确修改。第 2 处,将 bDraw 变量的值设为 false,这导致程序在调用 paint()方法时不能进入 g.drawLine 语句,应改为 true。第 3 处,有两个错误:首先要明确 clear 是btn 对象显示在用户界面的名称,而不能作为对象来与 event.target 做比较,因此应改为 btn,这在调试时就会出现变量无法解析的错误;其次,符号!二应改为符号二二这里要确定点击 btn 事件发生才能做清除,否则不能达到预期效果。